agora inbox for pgsql-hackers@postgresql.org
help / color / mirror / Atom feed[PATCH v8 1/3] fix CompareIndexInfo-related bugs
648+ messages / 3 participants
[nested] [flat]
* [PATCH v8 1/3] fix CompareIndexInfo-related bugs
@ 2019-03-26 20:05 Alvaro Herrera <alvherre@alvh.no-ip.org>
0 siblings, 0 replies; 648+ messages in thread
From: Alvaro Herrera @ 2019-03-26 20:05 UTC (permalink / raw)
---
src/backend/catalog/index.c | 3 +--
src/backend/commands/indexcmds.c | 1 -
src/backend/commands/tablecmds.c | 2 +-
3 files changed, 2 insertions(+), 4 deletions(-)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index d2e284f6de6..c0417d4c5a2 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -1850,7 +1850,6 @@ CompareIndexInfo(IndexInfo *info1, IndexInfo *info2,
if (info1->ii_NumIndexKeyAttrs != info2->ii_NumIndexKeyAttrs)
return false;
-
/*
* and columns match through the attribute map (actual attribute numbers
* might differ!) Note that this implies that index columns that are
@@ -1859,7 +1858,7 @@ CompareIndexInfo(IndexInfo *info1, IndexInfo *info2,
*/
for (i = 0; i < info1->ii_NumIndexAttrs; i++)
{
- if (maplen < info2->ii_IndexAttrNumbers[i])
+ if (maplen < info2->ii_IndexAttrNumbers[i] - 1)
elog(ERROR, "incorrect attribute map");
/* ignore expressions at this stage */
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index c3a53d81aab..d6eb48cb4e6 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -925,7 +925,6 @@ DefineIndex(Oid relationId,
gettext_noop("could not convert row type"));
maplen = parentDesc->natts;
-
foreach(cell, childidxs)
{
Oid cldidxid = lfirst_oid(cell);
diff --git a/src/backend/commands/tablecmds.c b/src/backend/commands/tablecmds.c
index 3183b2aaa12..048c1196685 100644
--- a/src/backend/commands/tablecmds.c
+++ b/src/backend/commands/tablecmds.c
@@ -15591,7 +15591,7 @@ ATExecAttachPartitionIdx(List **wqueue, Relation parentIdx, RangeVar *name)
partIdx->rd_opfamily,
parentIdx->rd_opfamily,
attmap,
- RelationGetDescr(partTbl)->natts))
+ RelationGetDescr(parentTbl)->natts))
ereport(ERROR,
(errcode(ERRCODE_INVALID_OBJECT_DEFINITION),
errmsg("cannot attach index \"%s\" as a partition of index \"%s\"",
--
2.17.1
--zYM0uCDKw75PZbzx
Content-Type: text/x-diff; charset=us-ascii
Content-Disposition: attachment;
filename="v8-0002-Rework-deleteObjectsInList-to-allow-objtype-speci.patch"
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH v29 01/11] Add a syntax to create Incrementally Maintainable Materialized Views
@ 2019-12-20 01:05 Yugo Nagata <nagata@sraoss.co.jp>
0 siblings, 0 replies; 648+ messages in thread
From: Yugo Nagata @ 2019-12-20 01:05 UTC (permalink / raw)
Allow to create Incrementally Maintainable Materialized View (IMMV)
by using INCREMENTAL option in CREATE MATERIALIZED VIEW command
as follow:
CREATE [INCREMANTAL] MATERIALIZED VIEW xxxxx AS SELECT ....;
---
src/backend/parser/gram.y | 32 +++++++++++++++++++++-----------
src/include/nodes/primnodes.h | 1 +
src/include/parser/kwlist.h | 1 +
3 files changed, 23 insertions(+), 11 deletions(-)
diff --git a/src/backend/parser/gram.y b/src/backend/parser/gram.y
index 7d2032885e..33c647b0c7 100644
--- a/src/backend/parser/gram.y
+++ b/src/backend/parser/gram.y
@@ -465,6 +465,7 @@ static Node *makeRecursiveViewSelect(char *relname, List *aliases, Node *query);
%type <range> OptTempTableName
%type <into> into_clause create_as_target create_mv_target
+%type <boolean> incremental
%type <defelt> createfunc_opt_item common_func_opt_item dostmt_opt_item
%type <fun_param> func_arg func_arg_with_default table_func_column aggr_arg
@@ -718,7 +719,7 @@ static Node *makeRecursiveViewSelect(char *relname, List *aliases, Node *query);
HANDLER HAVING HEADER_P HOLD HOUR_P
IDENTITY_P IF_P ILIKE IMMEDIATE IMMUTABLE IMPLICIT_P IMPORT_P IN_P INCLUDE
- INCLUDING INCREMENT INDENT INDEX INDEXES INHERIT INHERITS INITIALLY INLINE_P
+ INCLUDING INCREMENT INCREMENTAL INDENT INDEX INDEXES INHERIT INHERITS INITIALLY INLINE_P
INNER_P INOUT INPUT_P INSENSITIVE INSERT INSTEAD INT_P INTEGER
INTERSECT INTERVAL INTO INVOKER IS ISNULL ISOLATION
@@ -4652,32 +4653,34 @@ opt_with_data:
*****************************************************************************/
CreateMatViewStmt:
- CREATE OptNoLog MATERIALIZED VIEW create_mv_target AS SelectStmt opt_with_data
+ CREATE OptNoLog incremental MATERIALIZED VIEW create_mv_target AS SelectStmt opt_with_data
{
CreateTableAsStmt *ctas = makeNode(CreateTableAsStmt);
- ctas->query = $7;
- ctas->into = $5;
+ ctas->query = $8;
+ ctas->into = $6;
ctas->objtype = OBJECT_MATVIEW;
ctas->is_select_into = false;
ctas->if_not_exists = false;
/* cram additional flags into the IntoClause */
- $5->rel->relpersistence = $2;
- $5->skipData = !($8);
+ $6->rel->relpersistence = $2;
+ $6->skipData = !($9);
+ $6->ivm = $3;
$$ = (Node *) ctas;
}
- | CREATE OptNoLog MATERIALIZED VIEW IF_P NOT EXISTS create_mv_target AS SelectStmt opt_with_data
+ | CREATE OptNoLog incremental MATERIALIZED VIEW IF_P NOT EXISTS create_mv_target AS SelectStmt opt_with_data
{
CreateTableAsStmt *ctas = makeNode(CreateTableAsStmt);
- ctas->query = $10;
- ctas->into = $8;
+ ctas->query = $11;
+ ctas->into = $9;
ctas->objtype = OBJECT_MATVIEW;
ctas->is_select_into = false;
ctas->if_not_exists = true;
/* cram additional flags into the IntoClause */
- $8->rel->relpersistence = $2;
- $8->skipData = !($11);
+ $9->rel->relpersistence = $2;
+ $9->skipData = !($12);
+ $9->ivm = $3;
$$ = (Node *) ctas;
}
;
@@ -4694,9 +4697,14 @@ create_mv_target:
$$->tableSpaceName = $5;
$$->viewQuery = NULL; /* filled at analysis time */
$$->skipData = false; /* might get changed later */
+ $$->ivm = false;
}
;
+incremental: INCREMENTAL { $$ = true; }
+ | /*EMPTY*/ { $$ = false; }
+ ;
+
OptNoLog: UNLOGGED { $$ = RELPERSISTENCE_UNLOGGED; }
| /*EMPTY*/ { $$ = RELPERSISTENCE_PERMANENT; }
;
@@ -17141,6 +17149,7 @@ unreserved_keyword:
| INCLUDE
| INCLUDING
| INCREMENT
+ | INCREMENTAL
| INDENT
| INDEX
| INDEXES
@@ -17709,6 +17718,7 @@ bare_label_keyword:
| INCLUDE
| INCLUDING
| INCREMENT
+ | INCREMENTAL
| INDENT
| INDEX
| INDEXES
diff --git a/src/include/nodes/primnodes.h b/src/include/nodes/primnodes.h
index 60d72a876b..cecb968b36 100644
--- a/src/include/nodes/primnodes.h
+++ b/src/include/nodes/primnodes.h
@@ -146,6 +146,7 @@ typedef struct IntoClause
/* materialized view's SELECT query */
Node *viewQuery pg_node_attr(query_jumble_ignore);
bool skipData; /* true for WITH NO DATA */
+ bool ivm; /* true for WITH IVM */
} IntoClause;
diff --git a/src/include/parser/kwlist.h b/src/include/parser/kwlist.h
index 5984dcfa4b..d60eb98d65 100644
--- a/src/include/parser/kwlist.h
+++ b/src/include/parser/kwlist.h
@@ -207,6 +207,7 @@ PG_KEYWORD("in", IN_P, RESERVED_KEYWORD, BARE_LABEL)
PG_KEYWORD("include", INCLUDE, UNRESERVED_KEYWORD, BARE_LABEL)
PG_KEYWORD("including", INCLUDING, UNRESERVED_KEYWORD, BARE_LABEL)
PG_KEYWORD("increment", INCREMENT, UNRESERVED_KEYWORD, BARE_LABEL)
+PG_KEYWORD("incremental", INCREMENTAL, UNRESERVED_KEYWORD, BARE_LABEL)
PG_KEYWORD("indent", INDENT, UNRESERVED_KEYWORD, BARE_LABEL)
PG_KEYWORD("index", INDEX, UNRESERVED_KEYWORD, BARE_LABEL)
PG_KEYWORD("indexes", INDEXES, UNRESERVED_KEYWORD, BARE_LABEL)
--
2.25.1
--Multipart=_Mon__28_Aug_2023_11_52_52_+0900_hj6L5h176QaSGtg7
Content-Type: text/x-diff;
name="v29-0002-Add-relisivm-column-to-pg_class-system-catalog.patch"
Content-Disposition: attachment;
filename="v29-0002-Add-relisivm-column-to-pg_class-system-catalog.patch"
Content-Transfer-Encoding: 7bit
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH 1/4] Make propgraph object descriptions translatable
@ 2026-05-26 07:14 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-05-26 07:14 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
Build the whole object description from a single format string
instead.
---
src/backend/catalog/objectaddress.c | 61 ++++++++++++++++++++---------
1 file changed, 43 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..c107d0fb0e4 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,15 +4092,15 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+ Assert(objdesc.len > 0);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
ReleaseSysCache(tup);
break;
@@ -4109,6 +4112,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,9 +4131,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4137,6 +4147,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4161,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4175,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,9 +4194,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4189,6 +4210,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4224,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.47.3
----Next_Part(Thu_May_28_12_16_22_2026_214)--
Content-Type: Text/X-Patch; charset=us-ascii
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment;
filename="0002-Use-double-quotes-in-message.patch"
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH 1/4] Make propgraph object descriptions translatable
@ 2026-05-26 07:14 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-05-26 07:14 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
Build the whole object description from a single format string
instead.
---
src/backend/catalog/objectaddress.c | 61 ++++++++++++++++++++---------
1 file changed, 43 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..c107d0fb0e4 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,15 +4092,15 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+ Assert(objdesc.len > 0);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
ReleaseSysCache(tup);
break;
@@ -4109,6 +4112,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,9 +4131,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4137,6 +4147,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4161,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4175,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,9 +4194,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4189,6 +4210,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4224,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.47.3
----Next_Part(Thu_May_28_12_16_22_2026_214)--
Content-Type: Text/X-Patch; charset=us-ascii
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment;
filename="0002-Use-double-quotes-in-message.patch"
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH 1/4] Make propgraph object descriptions translatable
@ 2026-05-26 07:14 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-05-26 07:14 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
Build the whole object description from a single format string
instead.
---
src/backend/catalog/objectaddress.c | 61 ++++++++++++++++++++---------
1 file changed, 43 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..c107d0fb0e4 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,15 +4092,15 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+ Assert(objdesc.len > 0);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
ReleaseSysCache(tup);
break;
@@ -4109,6 +4112,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,9 +4131,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4137,6 +4147,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4161,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4175,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,9 +4194,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4189,6 +4210,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4224,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.47.3
----Next_Part(Thu_May_28_12_16_22_2026_214)--
Content-Type: Text/X-Patch; charset=us-ascii
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment;
filename="0002-Use-double-quotes-in-message.patch"
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH 1/4] Make propgraph object descriptions translatable
@ 2026-05-26 07:14 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-05-26 07:14 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
Build the whole object description from a single format string
instead.
---
src/backend/catalog/objectaddress.c | 61 ++++++++++++++++++++---------
1 file changed, 43 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..c107d0fb0e4 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,15 +4092,15 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+ Assert(objdesc.len > 0);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
ReleaseSysCache(tup);
break;
@@ -4109,6 +4112,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,9 +4131,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4137,6 +4147,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4161,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4175,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,9 +4194,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4189,6 +4210,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4224,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.47.3
----Next_Part(Thu_May_28_12_16_22_2026_214)--
Content-Type: Text/X-Patch; charset=us-ascii
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment;
filename="0002-Use-double-quotes-in-message.patch"
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH 1/4] Make propgraph object descriptions translatable
@ 2026-05-26 07:14 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-05-26 07:14 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
Build the whole object description from a single format string
instead.
---
src/backend/catalog/objectaddress.c | 61 ++++++++++++++++++++---------
1 file changed, 43 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..c107d0fb0e4 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,15 +4092,15 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+ Assert(objdesc.len > 0);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
ReleaseSysCache(tup);
break;
@@ -4109,6 +4112,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,9 +4131,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4137,6 +4147,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4161,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4175,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,9 +4194,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4189,6 +4210,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4224,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.47.3
----Next_Part(Thu_May_28_12_16_22_2026_214)--
Content-Type: Text/X-Patch; charset=us-ascii
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment;
filename="0002-Use-double-quotes-in-message.patch"
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH 1/4] Make propgraph object descriptions translatable
@ 2026-05-26 07:14 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-05-26 07:14 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
Build the whole object description from a single format string
instead.
---
src/backend/catalog/objectaddress.c | 61 ++++++++++++++++++++---------
1 file changed, 43 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..c107d0fb0e4 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,15 +4092,15 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+ Assert(objdesc.len > 0);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
ReleaseSysCache(tup);
break;
@@ -4109,6 +4112,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,9 +4131,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4137,6 +4147,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4161,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4175,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,9 +4194,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4189,6 +4210,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4224,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.47.3
----Next_Part(Thu_May_28_12_16_22_2026_214)--
Content-Type: Text/X-Patch; charset=us-ascii
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment;
filename="0002-Use-double-quotes-in-message.patch"
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH 1/4] Make propgraph object descriptions translatable
@ 2026-05-26 07:14 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-05-26 07:14 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
Build the whole object description from a single format string
instead.
---
src/backend/catalog/objectaddress.c | 61 ++++++++++++++++++++---------
1 file changed, 43 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..c107d0fb0e4 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,15 +4092,15 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+ Assert(objdesc.len > 0);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
ReleaseSysCache(tup);
break;
@@ -4109,6 +4112,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,9 +4131,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4137,6 +4147,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4161,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4175,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,9 +4194,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4189,6 +4210,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4224,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.47.3
----Next_Part(Thu_May_28_12_16_22_2026_214)--
Content-Type: Text/X-Patch; charset=us-ascii
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment;
filename="0002-Use-double-quotes-in-message.patch"
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH 1/4] Make propgraph object descriptions translatable
@ 2026-05-26 07:14 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-05-26 07:14 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
Build the whole object description from a single format string
instead.
---
src/backend/catalog/objectaddress.c | 61 ++++++++++++++++++++---------
1 file changed, 43 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..c107d0fb0e4 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,15 +4092,15 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+ Assert(objdesc.len > 0);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
ReleaseSysCache(tup);
break;
@@ -4109,6 +4112,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,9 +4131,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4137,6 +4147,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4161,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4175,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,9 +4194,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4189,6 +4210,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4224,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.47.3
----Next_Part(Thu_May_28_12_16_22_2026_214)--
Content-Type: Text/X-Patch; charset=us-ascii
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment;
filename="0002-Use-double-quotes-in-message.patch"
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH 1/4] Make propgraph object descriptions translatable
@ 2026-05-26 07:14 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-05-26 07:14 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
Build the whole object description from a single format string
instead.
---
src/backend/catalog/objectaddress.c | 61 ++++++++++++++++++++---------
1 file changed, 43 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..c107d0fb0e4 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,15 +4092,15 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+ Assert(objdesc.len > 0);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
ReleaseSysCache(tup);
break;
@@ -4109,6 +4112,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,9 +4131,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4137,6 +4147,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4161,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4175,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,9 +4194,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4189,6 +4210,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4224,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.47.3
----Next_Part(Thu_May_28_12_16_22_2026_214)--
Content-Type: Text/X-Patch; charset=us-ascii
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment;
filename="0002-Use-double-quotes-in-message.patch"
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH 1/4] Make propgraph object descriptions translatable
@ 2026-05-26 07:14 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-05-26 07:14 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
Build the whole object description from a single format string
instead.
---
src/backend/catalog/objectaddress.c | 61 ++++++++++++++++++++---------
1 file changed, 43 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..c107d0fb0e4 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,15 +4092,15 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+ Assert(objdesc.len > 0);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
ReleaseSysCache(tup);
break;
@@ -4109,6 +4112,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,9 +4131,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4137,6 +4147,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4161,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4175,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,9 +4194,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4189,6 +4210,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4224,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.47.3
----Next_Part(Thu_May_28_12_16_22_2026_214)--
Content-Type: Text/X-Patch; charset=us-ascii
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment;
filename="0002-Use-double-quotes-in-message.patch"
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH 1/4] Make propgraph object descriptions translatable
@ 2026-05-26 07:14 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-05-26 07:14 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
Build the whole object description from a single format string
instead.
---
src/backend/catalog/objectaddress.c | 61 ++++++++++++++++++++---------
1 file changed, 43 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..c107d0fb0e4 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,15 +4092,15 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+ Assert(objdesc.len > 0);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
ReleaseSysCache(tup);
break;
@@ -4109,6 +4112,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,9 +4131,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4137,6 +4147,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4161,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4175,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,9 +4194,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4189,6 +4210,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4224,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.47.3
----Next_Part(Thu_May_28_12_16_22_2026_214)--
Content-Type: Text/X-Patch; charset=us-ascii
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment;
filename="0002-Use-double-quotes-in-message.patch"
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH 1/4] Make propgraph object descriptions translatable
@ 2026-05-26 07:14 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-05-26 07:14 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
Build the whole object description from a single format string
instead.
---
src/backend/catalog/objectaddress.c | 61 ++++++++++++++++++++---------
1 file changed, 43 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..c107d0fb0e4 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,15 +4092,15 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+ Assert(objdesc.len > 0);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
ReleaseSysCache(tup);
break;
@@ -4109,6 +4112,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,9 +4131,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4137,6 +4147,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4161,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4175,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,9 +4194,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4189,6 +4210,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4224,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.47.3
----Next_Part(Thu_May_28_12_16_22_2026_214)--
Content-Type: Text/X-Patch; charset=us-ascii
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment;
filename="0002-Use-double-quotes-in-message.patch"
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH 1/4] Make propgraph object descriptions translatable
@ 2026-05-26 07:14 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-05-26 07:14 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
Build the whole object description from a single format string
instead.
---
src/backend/catalog/objectaddress.c | 61 ++++++++++++++++++++---------
1 file changed, 43 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..c107d0fb0e4 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,15 +4092,15 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+ Assert(objdesc.len > 0);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
ReleaseSysCache(tup);
break;
@@ -4109,6 +4112,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,9 +4131,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4137,6 +4147,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4161,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4175,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,9 +4194,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4189,6 +4210,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4224,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.47.3
----Next_Part(Thu_May_28_12_16_22_2026_214)--
Content-Type: Text/X-Patch; charset=us-ascii
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment;
filename="0002-Use-double-quotes-in-message.patch"
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH 1/4] Make propgraph object descriptions translatable
@ 2026-05-26 07:14 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-05-26 07:14 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
Build the whole object description from a single format string
instead.
---
src/backend/catalog/objectaddress.c | 61 ++++++++++++++++++++---------
1 file changed, 43 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..c107d0fb0e4 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,15 +4092,15 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+ Assert(objdesc.len > 0);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
ReleaseSysCache(tup);
break;
@@ -4109,6 +4112,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,9 +4131,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4137,6 +4147,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4161,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4175,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,9 +4194,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4189,6 +4210,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4224,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.47.3
----Next_Part(Thu_May_28_12_16_22_2026_214)--
Content-Type: Text/X-Patch; charset=us-ascii
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment;
filename="0002-Use-double-quotes-in-message.patch"
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH 1/4] Make propgraph object descriptions translatable
@ 2026-05-26 07:14 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-05-26 07:14 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
Build the whole object description from a single format string
instead.
---
src/backend/catalog/objectaddress.c | 61 ++++++++++++++++++++---------
1 file changed, 43 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..c107d0fb0e4 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,15 +4092,15 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+ Assert(objdesc.len > 0);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
ReleaseSysCache(tup);
break;
@@ -4109,6 +4112,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,9 +4131,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4137,6 +4147,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4161,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4175,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,9 +4194,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4189,6 +4210,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4224,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.47.3
----Next_Part(Thu_May_28_12_16_22_2026_214)--
Content-Type: Text/X-Patch; charset=us-ascii
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment;
filename="0002-Use-double-quotes-in-message.patch"
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH 1/4] Make propgraph object descriptions translatable
@ 2026-05-26 07:14 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-05-26 07:14 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
Build the whole object description from a single format string
instead.
---
src/backend/catalog/objectaddress.c | 61 ++++++++++++++++++++---------
1 file changed, 43 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..c107d0fb0e4 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,15 +4092,15 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+ Assert(objdesc.len > 0);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
ReleaseSysCache(tup);
break;
@@ -4109,6 +4112,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,9 +4131,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4137,6 +4147,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4161,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4175,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,9 +4194,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4189,6 +4210,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4224,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.47.3
----Next_Part(Thu_May_28_12_16_22_2026_214)--
Content-Type: Text/X-Patch; charset=us-ascii
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment;
filename="0002-Use-double-quotes-in-message.patch"
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH 1/4] Make propgraph object descriptions translatable
@ 2026-05-26 07:14 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-05-26 07:14 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
Build the whole object description from a single format string
instead.
---
src/backend/catalog/objectaddress.c | 61 ++++++++++++++++++++---------
1 file changed, 43 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..c107d0fb0e4 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,15 +4092,15 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+ Assert(objdesc.len > 0);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
ReleaseSysCache(tup);
break;
@@ -4109,6 +4112,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,9 +4131,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4137,6 +4147,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4161,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4175,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,9 +4194,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4189,6 +4210,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4224,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.47.3
----Next_Part(Thu_May_28_12_16_22_2026_214)--
Content-Type: Text/X-Patch; charset=us-ascii
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment;
filename="0002-Use-double-quotes-in-message.patch"
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH 1/4] Make propgraph object descriptions translatable
@ 2026-05-26 07:14 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-05-26 07:14 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
Build the whole object description from a single format string
instead.
---
src/backend/catalog/objectaddress.c | 61 ++++++++++++++++++++---------
1 file changed, 43 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..c107d0fb0e4 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,15 +4092,15 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+ Assert(objdesc.len > 0);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
ReleaseSysCache(tup);
break;
@@ -4109,6 +4112,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,9 +4131,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4137,6 +4147,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4161,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4175,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,9 +4194,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4189,6 +4210,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4224,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.47.3
----Next_Part(Thu_May_28_12_16_22_2026_214)--
Content-Type: Text/X-Patch; charset=us-ascii
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment;
filename="0002-Use-double-quotes-in-message.patch"
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH 1/4] Make propgraph object descriptions translatable
@ 2026-05-26 07:14 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-05-26 07:14 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
Build the whole object description from a single format string
instead.
---
src/backend/catalog/objectaddress.c | 61 ++++++++++++++++++++---------
1 file changed, 43 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..c107d0fb0e4 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,15 +4092,15 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+ Assert(objdesc.len > 0);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
ReleaseSysCache(tup);
break;
@@ -4109,6 +4112,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,9 +4131,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4137,6 +4147,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4161,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4175,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,9 +4194,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4189,6 +4210,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4224,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.47.3
----Next_Part(Thu_May_28_12_16_22_2026_214)--
Content-Type: Text/X-Patch; charset=us-ascii
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment;
filename="0002-Use-double-quotes-in-message.patch"
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH 1/4] Make propgraph object descriptions translatable
@ 2026-05-26 07:14 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-05-26 07:14 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
Build the whole object description from a single format string
instead.
---
src/backend/catalog/objectaddress.c | 61 ++++++++++++++++++++---------
1 file changed, 43 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..c107d0fb0e4 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,15 +4092,15 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+ Assert(objdesc.len > 0);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
ReleaseSysCache(tup);
break;
@@ -4109,6 +4112,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,9 +4131,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4137,6 +4147,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4161,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4175,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,9 +4194,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4189,6 +4210,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4224,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.47.3
----Next_Part(Thu_May_28_12_16_22_2026_214)--
Content-Type: Text/X-Patch; charset=us-ascii
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment;
filename="0002-Use-double-quotes-in-message.patch"
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH 1/4] Make propgraph object descriptions translatable
@ 2026-05-26 07:14 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-05-26 07:14 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
Build the whole object description from a single format string
instead.
---
src/backend/catalog/objectaddress.c | 61 ++++++++++++++++++++---------
1 file changed, 43 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..c107d0fb0e4 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,15 +4092,15 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+ Assert(objdesc.len > 0);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
ReleaseSysCache(tup);
break;
@@ -4109,6 +4112,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,9 +4131,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4137,6 +4147,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4161,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4175,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,9 +4194,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4189,6 +4210,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4224,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.47.3
----Next_Part(Thu_May_28_12_16_22_2026_214)--
Content-Type: Text/X-Patch; charset=us-ascii
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment;
filename="0002-Use-double-quotes-in-message.patch"
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH 1/4] Make propgraph object descriptions translatable
@ 2026-05-26 07:14 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-05-26 07:14 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
Build the whole object description from a single format string
instead.
---
src/backend/catalog/objectaddress.c | 61 ++++++++++++++++++++---------
1 file changed, 43 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..c107d0fb0e4 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,15 +4092,15 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+ Assert(objdesc.len > 0);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
ReleaseSysCache(tup);
break;
@@ -4109,6 +4112,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,9 +4131,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4137,6 +4147,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4161,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4175,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,9 +4194,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4189,6 +4210,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4224,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.47.3
----Next_Part(Thu_May_28_12_16_22_2026_214)--
Content-Type: Text/X-Patch; charset=us-ascii
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment;
filename="0002-Use-double-quotes-in-message.patch"
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH 1/4] Make propgraph object descriptions translatable
@ 2026-05-26 07:14 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-05-26 07:14 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
Build the whole object description from a single format string
instead.
---
src/backend/catalog/objectaddress.c | 61 ++++++++++++++++++++---------
1 file changed, 43 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..c107d0fb0e4 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,15 +4092,15 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+ Assert(objdesc.len > 0);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
ReleaseSysCache(tup);
break;
@@ -4109,6 +4112,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,9 +4131,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4137,6 +4147,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4161,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4175,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,9 +4194,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4189,6 +4210,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4224,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.47.3
----Next_Part(Thu_May_28_12_16_22_2026_214)--
Content-Type: Text/X-Patch; charset=us-ascii
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment;
filename="0002-Use-double-quotes-in-message.patch"
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH 1/4] Make propgraph object descriptions translatable
@ 2026-05-26 07:14 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-05-26 07:14 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
Build the whole object description from a single format string
instead.
---
src/backend/catalog/objectaddress.c | 61 ++++++++++++++++++++---------
1 file changed, 43 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..c107d0fb0e4 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,15 +4092,15 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+ Assert(objdesc.len > 0);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
ReleaseSysCache(tup);
break;
@@ -4109,6 +4112,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,9 +4131,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4137,6 +4147,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4161,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4175,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,9 +4194,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4189,6 +4210,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4224,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.47.3
----Next_Part(Thu_May_28_12_16_22_2026_214)--
Content-Type: Text/X-Patch; charset=us-ascii
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment;
filename="0002-Use-double-quotes-in-message.patch"
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH 1/4] Make propgraph object descriptions translatable
@ 2026-05-26 07:14 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-05-26 07:14 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
Build the whole object description from a single format string
instead.
---
src/backend/catalog/objectaddress.c | 61 ++++++++++++++++++++---------
1 file changed, 43 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..c107d0fb0e4 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,15 +4092,15 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+ Assert(objdesc.len > 0);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
ReleaseSysCache(tup);
break;
@@ -4109,6 +4112,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,9 +4131,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4137,6 +4147,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4161,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4175,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,9 +4194,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4189,6 +4210,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4224,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.47.3
----Next_Part(Thu_May_28_12_16_22_2026_214)--
Content-Type: Text/X-Patch; charset=us-ascii
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment;
filename="0002-Use-double-quotes-in-message.patch"
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH 1/4] Make propgraph object descriptions translatable
@ 2026-05-26 07:14 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-05-26 07:14 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
Build the whole object description from a single format string
instead.
---
src/backend/catalog/objectaddress.c | 61 ++++++++++++++++++++---------
1 file changed, 43 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..c107d0fb0e4 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,15 +4092,15 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+ Assert(objdesc.len > 0);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
ReleaseSysCache(tup);
break;
@@ -4109,6 +4112,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,9 +4131,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4137,6 +4147,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4161,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4175,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,9 +4194,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4189,6 +4210,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4224,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.47.3
----Next_Part(Thu_May_28_12_16_22_2026_214)--
Content-Type: Text/X-Patch; charset=us-ascii
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment;
filename="0002-Use-double-quotes-in-message.patch"
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH 1/4] Make propgraph object descriptions translatable
@ 2026-05-26 07:14 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-05-26 07:14 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
Build the whole object description from a single format string
instead.
---
src/backend/catalog/objectaddress.c | 61 ++++++++++++++++++++---------
1 file changed, 43 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..c107d0fb0e4 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,15 +4092,15 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+ Assert(objdesc.len > 0);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
ReleaseSysCache(tup);
break;
@@ -4109,6 +4112,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,9 +4131,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4137,6 +4147,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4161,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4175,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,9 +4194,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4189,6 +4210,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4224,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.47.3
----Next_Part(Thu_May_28_12_16_22_2026_214)--
Content-Type: Text/X-Patch; charset=us-ascii
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment;
filename="0002-Use-double-quotes-in-message.patch"
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH 1/4] Make propgraph object descriptions translatable
@ 2026-05-26 07:14 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-05-26 07:14 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
Build the whole object description from a single format string
instead.
---
src/backend/catalog/objectaddress.c | 61 ++++++++++++++++++++---------
1 file changed, 43 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..c107d0fb0e4 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,15 +4092,15 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+ Assert(objdesc.len > 0);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
ReleaseSysCache(tup);
break;
@@ -4109,6 +4112,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,9 +4131,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4137,6 +4147,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4161,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4175,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,9 +4194,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4189,6 +4210,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4224,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.47.3
----Next_Part(Thu_May_28_12_16_22_2026_214)--
Content-Type: Text/X-Patch; charset=us-ascii
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment;
filename="0002-Use-double-quotes-in-message.patch"
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH 1/4] Make propgraph object descriptions translatable
@ 2026-05-26 07:14 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-05-26 07:14 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
Build the whole object description from a single format string
instead.
---
src/backend/catalog/objectaddress.c | 61 ++++++++++++++++++++---------
1 file changed, 43 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..c107d0fb0e4 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,15 +4092,15 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+ Assert(objdesc.len > 0);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
ReleaseSysCache(tup);
break;
@@ -4109,6 +4112,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,9 +4131,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4137,6 +4147,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4161,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4175,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,9 +4194,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4189,6 +4210,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4224,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.47.3
----Next_Part(Thu_May_28_12_16_22_2026_214)--
Content-Type: Text/X-Patch; charset=us-ascii
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment;
filename="0002-Use-double-quotes-in-message.patch"
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH 1/4] Make propgraph object descriptions translatable
@ 2026-05-26 07:14 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-05-26 07:14 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
Build the whole object description from a single format string
instead.
---
src/backend/catalog/objectaddress.c | 61 ++++++++++++++++++++---------
1 file changed, 43 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..c107d0fb0e4 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,15 +4092,15 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+ Assert(objdesc.len > 0);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
ReleaseSysCache(tup);
break;
@@ -4109,6 +4112,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,9 +4131,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4137,6 +4147,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4161,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4175,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,9 +4194,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4189,6 +4210,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4224,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.47.3
----Next_Part(Thu_May_28_12_16_22_2026_214)--
Content-Type: Text/X-Patch; charset=us-ascii
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment;
filename="0002-Use-double-quotes-in-message.patch"
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH 1/4] Make propgraph object descriptions translatable
@ 2026-05-26 07:14 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-05-26 07:14 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
Build the whole object description from a single format string
instead.
---
src/backend/catalog/objectaddress.c | 61 ++++++++++++++++++++---------
1 file changed, 43 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..c107d0fb0e4 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,15 +4092,15 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+ Assert(objdesc.len > 0);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
ReleaseSysCache(tup);
break;
@@ -4109,6 +4112,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,9 +4131,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4137,6 +4147,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4161,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4175,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,9 +4194,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4189,6 +4210,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4224,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.47.3
----Next_Part(Thu_May_28_12_16_22_2026_214)--
Content-Type: Text/X-Patch; charset=us-ascii
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment;
filename="0002-Use-double-quotes-in-message.patch"
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH 1/4] Make propgraph object descriptions translatable
@ 2026-05-26 07:14 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-05-26 07:14 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
Build the whole object description from a single format string
instead.
---
src/backend/catalog/objectaddress.c | 61 ++++++++++++++++++++---------
1 file changed, 43 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..c107d0fb0e4 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,15 +4092,15 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+ Assert(objdesc.len > 0);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
ReleaseSysCache(tup);
break;
@@ -4109,6 +4112,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,9 +4131,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4137,6 +4147,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4161,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4175,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,9 +4194,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4189,6 +4210,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4224,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.47.3
----Next_Part(Thu_May_28_12_16_22_2026_214)--
Content-Type: Text/X-Patch; charset=us-ascii
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment;
filename="0002-Use-double-quotes-in-message.patch"
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH 1/4] Make propgraph object descriptions translatable
@ 2026-05-26 07:14 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-05-26 07:14 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
Build the whole object description from a single format string
instead.
---
src/backend/catalog/objectaddress.c | 61 ++++++++++++++++++++---------
1 file changed, 43 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..c107d0fb0e4 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,15 +4092,15 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+ Assert(objdesc.len > 0);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
ReleaseSysCache(tup);
break;
@@ -4109,6 +4112,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,9 +4131,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4137,6 +4147,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4161,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4175,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,9 +4194,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4189,6 +4210,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4224,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.47.3
----Next_Part(Thu_May_28_12_16_22_2026_214)--
Content-Type: Text/X-Patch; charset=us-ascii
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment;
filename="0002-Use-double-quotes-in-message.patch"
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH 1/4] Make propgraph object descriptions translatable
@ 2026-05-26 07:14 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-05-26 07:14 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
Build the whole object description from a single format string
instead.
---
src/backend/catalog/objectaddress.c | 61 ++++++++++++++++++++---------
1 file changed, 43 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..c107d0fb0e4 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,15 +4092,15 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+ Assert(objdesc.len > 0);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
ReleaseSysCache(tup);
break;
@@ -4109,6 +4112,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,9 +4131,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4137,6 +4147,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4161,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4175,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,9 +4194,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4189,6 +4210,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4224,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.47.3
----Next_Part(Thu_May_28_12_16_22_2026_214)--
Content-Type: Text/X-Patch; charset=us-ascii
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment;
filename="0002-Use-double-quotes-in-message.patch"
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH 1/4] Make propgraph object descriptions translatable
@ 2026-05-26 07:14 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-05-26 07:14 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
Build the whole object description from a single format string
instead.
---
src/backend/catalog/objectaddress.c | 61 ++++++++++++++++++++---------
1 file changed, 43 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..c107d0fb0e4 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,15 +4092,15 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+ Assert(objdesc.len > 0);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
ReleaseSysCache(tup);
break;
@@ -4109,6 +4112,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,9 +4131,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4137,6 +4147,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4161,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4175,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,9 +4194,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4189,6 +4210,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4224,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.47.3
----Next_Part(Thu_May_28_12_16_22_2026_214)--
Content-Type: Text/X-Patch; charset=us-ascii
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment;
filename="0002-Use-double-quotes-in-message.patch"
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH 1/4] Make propgraph object descriptions translatable
@ 2026-05-26 07:14 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-05-26 07:14 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
Build the whole object description from a single format string
instead.
---
src/backend/catalog/objectaddress.c | 61 ++++++++++++++++++++---------
1 file changed, 43 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..c107d0fb0e4 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,15 +4092,15 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+ Assert(objdesc.len > 0);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
ReleaseSysCache(tup);
break;
@@ -4109,6 +4112,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,9 +4131,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4137,6 +4147,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4161,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4175,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,9 +4194,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4189,6 +4210,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4224,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.47.3
----Next_Part(Thu_May_28_12_16_22_2026_214)--
Content-Type: Text/X-Patch; charset=us-ascii
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment;
filename="0002-Use-double-quotes-in-message.patch"
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH 1/4] Make propgraph object descriptions translatable
@ 2026-05-26 07:14 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-05-26 07:14 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
Build the whole object description from a single format string
instead.
---
src/backend/catalog/objectaddress.c | 61 ++++++++++++++++++++---------
1 file changed, 43 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..c107d0fb0e4 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,15 +4092,15 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+ Assert(objdesc.len > 0);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
ReleaseSysCache(tup);
break;
@@ -4109,6 +4112,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,9 +4131,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4137,6 +4147,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4161,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4175,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,9 +4194,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4189,6 +4210,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4224,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.47.3
----Next_Part(Thu_May_28_12_16_22_2026_214)--
Content-Type: Text/X-Patch; charset=us-ascii
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment;
filename="0002-Use-double-quotes-in-message.patch"
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH 1/4] Make propgraph object descriptions translatable
@ 2026-05-26 07:14 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-05-26 07:14 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
Build the whole object description from a single format string
instead.
---
src/backend/catalog/objectaddress.c | 61 ++++++++++++++++++++---------
1 file changed, 43 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..c107d0fb0e4 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,15 +4092,15 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+ Assert(objdesc.len > 0);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
ReleaseSysCache(tup);
break;
@@ -4109,6 +4112,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,9 +4131,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4137,6 +4147,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4161,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4175,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,9 +4194,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4189,6 +4210,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4224,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.47.3
----Next_Part(Thu_May_28_12_16_22_2026_214)--
Content-Type: Text/X-Patch; charset=us-ascii
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment;
filename="0002-Use-double-quotes-in-message.patch"
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH 1/4] Make propgraph object descriptions translatable
@ 2026-05-26 07:14 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-05-26 07:14 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
Build the whole object description from a single format string
instead.
---
src/backend/catalog/objectaddress.c | 61 ++++++++++++++++++++---------
1 file changed, 43 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..c107d0fb0e4 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,15 +4092,15 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+ Assert(objdesc.len > 0);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
ReleaseSysCache(tup);
break;
@@ -4109,6 +4112,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,9 +4131,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4137,6 +4147,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4161,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4175,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,9 +4194,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4189,6 +4210,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4224,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.47.3
----Next_Part(Thu_May_28_12_16_22_2026_214)--
Content-Type: Text/X-Patch; charset=us-ascii
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment;
filename="0002-Use-double-quotes-in-message.patch"
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH 1/4] Make propgraph object descriptions translatable
@ 2026-05-26 07:14 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-05-26 07:14 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
Build the whole object description from a single format string
instead.
---
src/backend/catalog/objectaddress.c | 61 ++++++++++++++++++++---------
1 file changed, 43 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..c107d0fb0e4 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,15 +4092,15 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+ Assert(objdesc.len > 0);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
ReleaseSysCache(tup);
break;
@@ -4109,6 +4112,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,9 +4131,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4137,6 +4147,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4161,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4175,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,9 +4194,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4189,6 +4210,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4224,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.47.3
----Next_Part(Thu_May_28_12_16_22_2026_214)--
Content-Type: Text/X-Patch; charset=us-ascii
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment;
filename="0002-Use-double-quotes-in-message.patch"
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH 1/4] Make propgraph object descriptions translatable
@ 2026-05-26 07:14 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-05-26 07:14 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
Build the whole object description from a single format string
instead.
---
src/backend/catalog/objectaddress.c | 61 ++++++++++++++++++++---------
1 file changed, 43 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..c107d0fb0e4 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,15 +4092,15 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+ Assert(objdesc.len > 0);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
ReleaseSysCache(tup);
break;
@@ -4109,6 +4112,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,9 +4131,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4137,6 +4147,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4161,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4175,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,9 +4194,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4189,6 +4210,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4224,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.47.3
----Next_Part(Thu_May_28_12_16_22_2026_214)--
Content-Type: Text/X-Patch; charset=us-ascii
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment;
filename="0002-Use-double-quotes-in-message.patch"
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH 1/4] Make propgraph object descriptions translatable
@ 2026-05-26 07:14 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-05-26 07:14 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
Build the whole object description from a single format string
instead.
---
src/backend/catalog/objectaddress.c | 61 ++++++++++++++++++++---------
1 file changed, 43 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..c107d0fb0e4 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,15 +4092,15 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+ Assert(objdesc.len > 0);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
ReleaseSysCache(tup);
break;
@@ -4109,6 +4112,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,9 +4131,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4137,6 +4147,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4161,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4175,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,9 +4194,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4189,6 +4210,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4224,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.47.3
----Next_Part(Thu_May_28_12_16_22_2026_214)--
Content-Type: Text/X-Patch; charset=us-ascii
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment;
filename="0002-Use-double-quotes-in-message.patch"
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH 1/4] Make propgraph object descriptions translatable
@ 2026-05-26 07:14 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-05-26 07:14 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
Build the whole object description from a single format string
instead.
---
src/backend/catalog/objectaddress.c | 61 ++++++++++++++++++++---------
1 file changed, 43 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..c107d0fb0e4 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,15 +4092,15 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+ Assert(objdesc.len > 0);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
ReleaseSysCache(tup);
break;
@@ -4109,6 +4112,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,9 +4131,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4137,6 +4147,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4161,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4175,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,9 +4194,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4189,6 +4210,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4224,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.47.3
----Next_Part(Thu_May_28_12_16_22_2026_214)--
Content-Type: Text/X-Patch; charset=us-ascii
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment;
filename="0002-Use-double-quotes-in-message.patch"
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH 1/4] Make propgraph object descriptions translatable
@ 2026-05-26 07:14 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-05-26 07:14 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
Build the whole object description from a single format string
instead.
---
src/backend/catalog/objectaddress.c | 61 ++++++++++++++++++++---------
1 file changed, 43 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..c107d0fb0e4 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,15 +4092,15 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+ Assert(objdesc.len > 0);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
ReleaseSysCache(tup);
break;
@@ -4109,6 +4112,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,9 +4131,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4137,6 +4147,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4161,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4175,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,9 +4194,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4189,6 +4210,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4224,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.47.3
----Next_Part(Thu_May_28_12_16_22_2026_214)--
Content-Type: Text/X-Patch; charset=us-ascii
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment;
filename="0002-Use-double-quotes-in-message.patch"
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH 1/4] Make propgraph object descriptions translatable
@ 2026-05-26 07:14 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-05-26 07:14 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
Build the whole object description from a single format string
instead.
---
src/backend/catalog/objectaddress.c | 61 ++++++++++++++++++++---------
1 file changed, 43 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..c107d0fb0e4 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,15 +4092,15 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+ Assert(objdesc.len > 0);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
ReleaseSysCache(tup);
break;
@@ -4109,6 +4112,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,9 +4131,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4137,6 +4147,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4161,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4175,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,9 +4194,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4189,6 +4210,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4224,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.47.3
----Next_Part(Thu_May_28_12_16_22_2026_214)--
Content-Type: Text/X-Patch; charset=us-ascii
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment;
filename="0002-Use-double-quotes-in-message.patch"
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH 1/4] Make propgraph object descriptions translatable
@ 2026-05-26 07:14 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-05-26 07:14 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
Build the whole object description from a single format string
instead.
---
src/backend/catalog/objectaddress.c | 61 ++++++++++++++++++++---------
1 file changed, 43 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..c107d0fb0e4 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,15 +4092,15 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+ Assert(objdesc.len > 0);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
ReleaseSysCache(tup);
break;
@@ -4109,6 +4112,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,9 +4131,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4137,6 +4147,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4161,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4175,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,9 +4194,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4189,6 +4210,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4224,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.47.3
----Next_Part(Thu_May_28_12_16_22_2026_214)--
Content-Type: Text/X-Patch; charset=us-ascii
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment;
filename="0002-Use-double-quotes-in-message.patch"
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH 1/4] Make propgraph object descriptions translatable
@ 2026-05-26 07:14 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-05-26 07:14 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
Build the whole object description from a single format string
instead.
---
src/backend/catalog/objectaddress.c | 61 ++++++++++++++++++++---------
1 file changed, 43 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..c107d0fb0e4 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,15 +4092,15 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+ Assert(objdesc.len > 0);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
ReleaseSysCache(tup);
break;
@@ -4109,6 +4112,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,9 +4131,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4137,6 +4147,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4161,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4175,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,9 +4194,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4189,6 +4210,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4224,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.47.3
----Next_Part(Thu_May_28_12_16_22_2026_214)--
Content-Type: Text/X-Patch; charset=us-ascii
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment;
filename="0002-Use-double-quotes-in-message.patch"
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH 1/4] Make propgraph object descriptions translatable
@ 2026-05-26 07:14 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-05-26 07:14 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
Build the whole object description from a single format string
instead.
---
src/backend/catalog/objectaddress.c | 61 ++++++++++++++++++++---------
1 file changed, 43 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..c107d0fb0e4 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,15 +4092,15 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+ Assert(objdesc.len > 0);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
ReleaseSysCache(tup);
break;
@@ -4109,6 +4112,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,9 +4131,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4137,6 +4147,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4161,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4175,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,9 +4194,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4189,6 +4210,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4224,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.47.3
----Next_Part(Thu_May_28_12_16_22_2026_214)--
Content-Type: Text/X-Patch; charset=us-ascii
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment;
filename="0002-Use-double-quotes-in-message.patch"
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH 1/4] Make propgraph object descriptions translatable
@ 2026-05-26 07:14 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-05-26 07:14 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
Build the whole object description from a single format string
instead.
---
src/backend/catalog/objectaddress.c | 61 ++++++++++++++++++++---------
1 file changed, 43 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..c107d0fb0e4 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,15 +4092,15 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+ Assert(objdesc.len > 0);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
ReleaseSysCache(tup);
break;
@@ -4109,6 +4112,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,9 +4131,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4137,6 +4147,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4161,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4175,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,9 +4194,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4189,6 +4210,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4224,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.47.3
----Next_Part(Thu_May_28_12_16_22_2026_214)--
Content-Type: Text/X-Patch; charset=us-ascii
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment;
filename="0002-Use-double-quotes-in-message.patch"
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH 1/4] Make propgraph object descriptions translatable
@ 2026-05-26 07:14 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-05-26 07:14 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
Build the whole object description from a single format string
instead.
---
src/backend/catalog/objectaddress.c | 61 ++++++++++++++++++++---------
1 file changed, 43 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..c107d0fb0e4 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,15 +4092,15 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+ Assert(objdesc.len > 0);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
ReleaseSysCache(tup);
break;
@@ -4109,6 +4112,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,9 +4131,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4137,6 +4147,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4161,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4175,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,9 +4194,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4189,6 +4210,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4224,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.47.3
----Next_Part(Thu_May_28_12_16_22_2026_214)--
Content-Type: Text/X-Patch; charset=us-ascii
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment;
filename="0002-Use-double-quotes-in-message.patch"
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH 1/4] Make propgraph object descriptions translatable
@ 2026-05-26 07:14 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-05-26 07:14 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
Build the whole object description from a single format string
instead.
---
src/backend/catalog/objectaddress.c | 61 ++++++++++++++++++++---------
1 file changed, 43 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..c107d0fb0e4 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,15 +4092,15 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+ Assert(objdesc.len > 0);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
ReleaseSysCache(tup);
break;
@@ -4109,6 +4112,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,9 +4131,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4137,6 +4147,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4161,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4175,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,9 +4194,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4189,6 +4210,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4224,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.47.3
----Next_Part(Thu_May_28_12_16_22_2026_214)--
Content-Type: Text/X-Patch; charset=us-ascii
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment;
filename="0002-Use-double-quotes-in-message.patch"
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH 1/4] Make propgraph object descriptions translatable
@ 2026-05-26 07:14 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-05-26 07:14 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
Build the whole object description from a single format string
instead.
---
src/backend/catalog/objectaddress.c | 61 ++++++++++++++++++++---------
1 file changed, 43 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..c107d0fb0e4 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,15 +4092,15 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+ Assert(objdesc.len > 0);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
ReleaseSysCache(tup);
break;
@@ -4109,6 +4112,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,9 +4131,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4137,6 +4147,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4161,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4175,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,9 +4194,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4189,6 +4210,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4224,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.47.3
----Next_Part(Thu_May_28_12_16_22_2026_214)--
Content-Type: Text/X-Patch; charset=us-ascii
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment;
filename="0002-Use-double-quotes-in-message.patch"
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH 1/4] Make propgraph object descriptions translatable
@ 2026-05-26 07:14 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-05-26 07:14 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
Build the whole object description from a single format string
instead.
---
src/backend/catalog/objectaddress.c | 61 ++++++++++++++++++++---------
1 file changed, 43 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..c107d0fb0e4 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,15 +4092,15 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+ Assert(objdesc.len > 0);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
ReleaseSysCache(tup);
break;
@@ -4109,6 +4112,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,9 +4131,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4137,6 +4147,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4161,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4175,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,9 +4194,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4189,6 +4210,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4224,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.47.3
----Next_Part(Thu_May_28_12_16_22_2026_214)--
Content-Type: Text/X-Patch; charset=us-ascii
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment;
filename="0002-Use-double-quotes-in-message.patch"
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH 1/4] Make propgraph object descriptions translatable
@ 2026-05-26 07:14 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-05-26 07:14 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
Build the whole object description from a single format string
instead.
---
src/backend/catalog/objectaddress.c | 61 ++++++++++++++++++++---------
1 file changed, 43 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..c107d0fb0e4 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,15 +4092,15 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+ Assert(objdesc.len > 0);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
ReleaseSysCache(tup);
break;
@@ -4109,6 +4112,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,9 +4131,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4137,6 +4147,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4161,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4175,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,9 +4194,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4189,6 +4210,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4224,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.47.3
----Next_Part(Thu_May_28_12_16_22_2026_214)--
Content-Type: Text/X-Patch; charset=us-ascii
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment;
filename="0002-Use-double-quotes-in-message.patch"
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH 1/4] Make propgraph object descriptions translatable
@ 2026-05-26 07:14 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-05-26 07:14 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
Build the whole object description from a single format string
instead.
---
src/backend/catalog/objectaddress.c | 61 ++++++++++++++++++++---------
1 file changed, 43 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..c107d0fb0e4 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,15 +4092,15 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+ Assert(objdesc.len > 0);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
ReleaseSysCache(tup);
break;
@@ -4109,6 +4112,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,9 +4131,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4137,6 +4147,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4161,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4175,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,9 +4194,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4189,6 +4210,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4224,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.47.3
----Next_Part(Thu_May_28_12_16_22_2026_214)--
Content-Type: Text/X-Patch; charset=us-ascii
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment;
filename="0002-Use-double-quotes-in-message.patch"
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH 1/4] Make propgraph object descriptions translatable
@ 2026-05-26 07:14 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-05-26 07:14 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
Build the whole object description from a single format string
instead.
---
src/backend/catalog/objectaddress.c | 61 ++++++++++++++++++++---------
1 file changed, 43 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..c107d0fb0e4 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,15 +4092,15 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+ Assert(objdesc.len > 0);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
ReleaseSysCache(tup);
break;
@@ -4109,6 +4112,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,9 +4131,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4137,6 +4147,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4161,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4175,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,9 +4194,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4189,6 +4210,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4224,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.47.3
----Next_Part(Thu_May_28_12_16_22_2026_214)--
Content-Type: Text/X-Patch; charset=us-ascii
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment;
filename="0002-Use-double-quotes-in-message.patch"
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH 1/4] Make propgraph object descriptions translatable
@ 2026-05-26 07:14 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-05-26 07:14 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
Build the whole object description from a single format string
instead.
---
src/backend/catalog/objectaddress.c | 61 ++++++++++++++++++++---------
1 file changed, 43 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..c107d0fb0e4 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,15 +4092,15 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+ Assert(objdesc.len > 0);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
ReleaseSysCache(tup);
break;
@@ -4109,6 +4112,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,9 +4131,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4137,6 +4147,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4161,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4175,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,9 +4194,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4189,6 +4210,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4224,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.47.3
----Next_Part(Thu_May_28_12_16_22_2026_214)--
Content-Type: Text/X-Patch; charset=us-ascii
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment;
filename="0002-Use-double-quotes-in-message.patch"
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH 1/4] Make propgraph object descriptions translatable
@ 2026-05-26 07:14 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-05-26 07:14 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
Build the whole object description from a single format string
instead.
---
src/backend/catalog/objectaddress.c | 61 ++++++++++++++++++++---------
1 file changed, 43 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..c107d0fb0e4 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,15 +4092,15 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+ Assert(objdesc.len > 0);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
ReleaseSysCache(tup);
break;
@@ -4109,6 +4112,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,9 +4131,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4137,6 +4147,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4161,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4175,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,9 +4194,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4189,6 +4210,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4224,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.47.3
----Next_Part(Thu_May_28_12_16_22_2026_214)--
Content-Type: Text/X-Patch; charset=us-ascii
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment;
filename="0002-Use-double-quotes-in-message.patch"
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH 1/4] Make propgraph object descriptions translatable
@ 2026-05-26 07:14 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-05-26 07:14 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
Build the whole object description from a single format string
instead.
---
src/backend/catalog/objectaddress.c | 61 ++++++++++++++++++++---------
1 file changed, 43 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..c107d0fb0e4 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,15 +4092,15 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+ Assert(objdesc.len > 0);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
ReleaseSysCache(tup);
break;
@@ -4109,6 +4112,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,9 +4131,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4137,6 +4147,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4161,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4175,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,9 +4194,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4189,6 +4210,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4224,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.47.3
----Next_Part(Thu_May_28_12_16_22_2026_214)--
Content-Type: Text/X-Patch; charset=us-ascii
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment;
filename="0002-Use-double-quotes-in-message.patch"
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH 1/4] Make propgraph object descriptions translatable
@ 2026-05-26 07:14 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-05-26 07:14 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
Build the whole object description from a single format string
instead.
---
src/backend/catalog/objectaddress.c | 61 ++++++++++++++++++++---------
1 file changed, 43 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..c107d0fb0e4 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,15 +4092,15 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+ Assert(objdesc.len > 0);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
ReleaseSysCache(tup);
break;
@@ -4109,6 +4112,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,9 +4131,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4137,6 +4147,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4161,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4175,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,9 +4194,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4189,6 +4210,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4224,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.47.3
----Next_Part(Thu_May_28_12_16_22_2026_214)--
Content-Type: Text/X-Patch; charset=us-ascii
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment;
filename="0002-Use-double-quotes-in-message.patch"
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH 1/4] Make propgraph object descriptions translatable
@ 2026-05-26 07:14 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-05-26 07:14 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
Build the whole object description from a single format string
instead.
---
src/backend/catalog/objectaddress.c | 61 ++++++++++++++++++++---------
1 file changed, 43 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..c107d0fb0e4 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,15 +4092,15 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+ Assert(objdesc.len > 0);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
ReleaseSysCache(tup);
break;
@@ -4109,6 +4112,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,9 +4131,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4137,6 +4147,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4161,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4175,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,9 +4194,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4189,6 +4210,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4224,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.47.3
----Next_Part(Thu_May_28_12_16_22_2026_214)--
Content-Type: Text/X-Patch; charset=us-ascii
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment;
filename="0002-Use-double-quotes-in-message.patch"
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH 1/4] Make propgraph object descriptions translatable
@ 2026-05-26 07:14 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-05-26 07:14 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
Build the whole object description from a single format string
instead.
---
src/backend/catalog/objectaddress.c | 61 ++++++++++++++++++++---------
1 file changed, 43 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..c107d0fb0e4 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,15 +4092,15 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+ Assert(objdesc.len > 0);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
ReleaseSysCache(tup);
break;
@@ -4109,6 +4112,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,9 +4131,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4137,6 +4147,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4161,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4175,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,9 +4194,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4189,6 +4210,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4224,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.47.3
----Next_Part(Thu_May_28_12_16_22_2026_214)--
Content-Type: Text/X-Patch; charset=us-ascii
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment;
filename="0002-Use-double-quotes-in-message.patch"
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH 1/4] Make propgraph object descriptions translatable
@ 2026-05-26 07:14 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-05-26 07:14 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
Build the whole object description from a single format string
instead.
---
src/backend/catalog/objectaddress.c | 61 ++++++++++++++++++++---------
1 file changed, 43 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..c107d0fb0e4 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,15 +4092,15 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+ Assert(objdesc.len > 0);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
ReleaseSysCache(tup);
break;
@@ -4109,6 +4112,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,9 +4131,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4137,6 +4147,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4161,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4175,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,9 +4194,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4189,6 +4210,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4224,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.47.3
----Next_Part(Thu_May_28_12_16_22_2026_214)--
Content-Type: Text/X-Patch; charset=us-ascii
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment;
filename="0002-Use-double-quotes-in-message.patch"
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH 1/4] Make propgraph object descriptions translatable
@ 2026-05-26 07:14 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-05-26 07:14 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
Build the whole object description from a single format string
instead.
---
src/backend/catalog/objectaddress.c | 61 ++++++++++++++++++++---------
1 file changed, 43 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..c107d0fb0e4 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,15 +4092,15 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+ Assert(objdesc.len > 0);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
ReleaseSysCache(tup);
break;
@@ -4109,6 +4112,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,9 +4131,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4137,6 +4147,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4161,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4175,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,9 +4194,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4189,6 +4210,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4224,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.47.3
----Next_Part(Thu_May_28_12_16_22_2026_214)--
Content-Type: Text/X-Patch; charset=us-ascii
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment;
filename="0002-Use-double-quotes-in-message.patch"
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH 1/4] Make propgraph object descriptions translatable
@ 2026-05-26 07:14 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-05-26 07:14 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
Build the whole object description from a single format string
instead.
---
src/backend/catalog/objectaddress.c | 61 ++++++++++++++++++++---------
1 file changed, 43 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..c107d0fb0e4 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,15 +4092,15 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+ Assert(objdesc.len > 0);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
ReleaseSysCache(tup);
break;
@@ -4109,6 +4112,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,9 +4131,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4137,6 +4147,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4161,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4175,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,9 +4194,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4189,6 +4210,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4224,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.47.3
----Next_Part(Thu_May_28_12_16_22_2026_214)--
Content-Type: Text/X-Patch; charset=us-ascii
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment;
filename="0002-Use-double-quotes-in-message.patch"
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH 1/4] Make propgraph object descriptions translatable
@ 2026-05-26 07:14 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-05-26 07:14 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
Build the whole object description from a single format string
instead.
---
src/backend/catalog/objectaddress.c | 61 ++++++++++++++++++++---------
1 file changed, 43 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..c107d0fb0e4 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,15 +4092,15 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+ Assert(objdesc.len > 0);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
ReleaseSysCache(tup);
break;
@@ -4109,6 +4112,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,9 +4131,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4137,6 +4147,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4161,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4175,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,9 +4194,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4189,6 +4210,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4224,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.47.3
----Next_Part(Thu_May_28_12_16_22_2026_214)--
Content-Type: Text/X-Patch; charset=us-ascii
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment;
filename="0002-Use-double-quotes-in-message.patch"
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH 1/4] Make propgraph object descriptions translatable
@ 2026-05-26 07:14 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-05-26 07:14 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
Build the whole object description from a single format string
instead.
---
src/backend/catalog/objectaddress.c | 61 ++++++++++++++++++++---------
1 file changed, 43 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..c107d0fb0e4 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,15 +4092,15 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+ Assert(objdesc.len > 0);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
ReleaseSysCache(tup);
break;
@@ -4109,6 +4112,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,9 +4131,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4137,6 +4147,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4161,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4175,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,9 +4194,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4189,6 +4210,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4224,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.47.3
----Next_Part(Thu_May_28_12_16_22_2026_214)--
Content-Type: Text/X-Patch; charset=us-ascii
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment;
filename="0002-Use-double-quotes-in-message.patch"
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH 1/4] Make propgraph object descriptions translatable
@ 2026-05-26 07:14 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-05-26 07:14 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
Build the whole object description from a single format string
instead.
---
src/backend/catalog/objectaddress.c | 61 ++++++++++++++++++++---------
1 file changed, 43 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..c107d0fb0e4 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,15 +4092,15 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+ Assert(objdesc.len > 0);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
ReleaseSysCache(tup);
break;
@@ -4109,6 +4112,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,9 +4131,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4137,6 +4147,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4161,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4175,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,9 +4194,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4189,6 +4210,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4224,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.47.3
----Next_Part(Thu_May_28_12_16_22_2026_214)--
Content-Type: Text/X-Patch; charset=us-ascii
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment;
filename="0002-Use-double-quotes-in-message.patch"
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH 1/4] Make propgraph object descriptions translatable
@ 2026-05-26 07:14 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-05-26 07:14 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
Build the whole object description from a single format string
instead.
---
src/backend/catalog/objectaddress.c | 61 ++++++++++++++++++++---------
1 file changed, 43 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..c107d0fb0e4 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,15 +4092,15 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+ Assert(objdesc.len > 0);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
ReleaseSysCache(tup);
break;
@@ -4109,6 +4112,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,9 +4131,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4137,6 +4147,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4161,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4175,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,9 +4194,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4189,6 +4210,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4224,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.47.3
----Next_Part(Thu_May_28_12_16_22_2026_214)--
Content-Type: Text/X-Patch; charset=us-ascii
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment;
filename="0002-Use-double-quotes-in-message.patch"
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH 1/4] Make propgraph object descriptions translatable
@ 2026-05-26 07:14 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-05-26 07:14 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
Build the whole object description from a single format string
instead.
---
src/backend/catalog/objectaddress.c | 61 ++++++++++++++++++++---------
1 file changed, 43 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..c107d0fb0e4 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,15 +4092,15 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+ Assert(objdesc.len > 0);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
ReleaseSysCache(tup);
break;
@@ -4109,6 +4112,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,9 +4131,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4137,6 +4147,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4161,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4175,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,9 +4194,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4189,6 +4210,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4224,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.47.3
----Next_Part(Thu_May_28_12_16_22_2026_214)--
Content-Type: Text/X-Patch; charset=us-ascii
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment;
filename="0002-Use-double-quotes-in-message.patch"
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH 1/4] Make propgraph object descriptions translatable
@ 2026-05-26 07:14 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-05-26 07:14 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
Build the whole object description from a single format string
instead.
---
src/backend/catalog/objectaddress.c | 61 ++++++++++++++++++++---------
1 file changed, 43 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..c107d0fb0e4 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,15 +4092,15 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+ Assert(objdesc.len > 0);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
ReleaseSysCache(tup);
break;
@@ -4109,6 +4112,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,9 +4131,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4137,6 +4147,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4161,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4175,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,9 +4194,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4189,6 +4210,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4224,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.47.3
----Next_Part(Thu_May_28_12_16_22_2026_214)--
Content-Type: Text/X-Patch; charset=us-ascii
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment;
filename="0002-Use-double-quotes-in-message.patch"
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH 1/4] Make propgraph object descriptions translatable
@ 2026-05-26 07:14 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-05-26 07:14 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
Build the whole object description from a single format string
instead.
---
src/backend/catalog/objectaddress.c | 61 ++++++++++++++++++++---------
1 file changed, 43 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..c107d0fb0e4 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,15 +4092,15 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+ Assert(objdesc.len > 0);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
ReleaseSysCache(tup);
break;
@@ -4109,6 +4112,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,9 +4131,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4137,6 +4147,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4161,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4175,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,9 +4194,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4189,6 +4210,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4224,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.47.3
----Next_Part(Thu_May_28_12_16_22_2026_214)--
Content-Type: Text/X-Patch; charset=us-ascii
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment;
filename="0002-Use-double-quotes-in-message.patch"
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH 1/4] Make propgraph object descriptions translatable
@ 2026-05-26 07:14 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-05-26 07:14 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
Build the whole object description from a single format string
instead.
---
src/backend/catalog/objectaddress.c | 61 ++++++++++++++++++++---------
1 file changed, 43 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..c107d0fb0e4 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,15 +4092,15 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+ Assert(objdesc.len > 0);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
ReleaseSysCache(tup);
break;
@@ -4109,6 +4112,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,9 +4131,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4137,6 +4147,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4161,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4175,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,9 +4194,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4189,6 +4210,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4224,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.47.3
----Next_Part(Thu_May_28_12_16_22_2026_214)--
Content-Type: Text/X-Patch; charset=us-ascii
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment;
filename="0002-Use-double-quotes-in-message.patch"
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH 1/4] Make propgraph object descriptions translatable
@ 2026-05-26 07:14 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-05-26 07:14 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
Build the whole object description from a single format string
instead.
---
src/backend/catalog/objectaddress.c | 61 ++++++++++++++++++++---------
1 file changed, 43 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..c107d0fb0e4 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,15 +4092,15 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+ Assert(objdesc.len > 0);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
ReleaseSysCache(tup);
break;
@@ -4109,6 +4112,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,9 +4131,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4137,6 +4147,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4161,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4175,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,9 +4194,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4189,6 +4210,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4224,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.47.3
----Next_Part(Thu_May_28_12_16_22_2026_214)--
Content-Type: Text/X-Patch; charset=us-ascii
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment;
filename="0002-Use-double-quotes-in-message.patch"
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH 1/4] Make propgraph object descriptions translatable
@ 2026-05-26 07:14 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-05-26 07:14 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
Build the whole object description from a single format string
instead.
---
src/backend/catalog/objectaddress.c | 61 ++++++++++++++++++++---------
1 file changed, 43 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..c107d0fb0e4 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,15 +4092,15 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+ Assert(objdesc.len > 0);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
ReleaseSysCache(tup);
break;
@@ -4109,6 +4112,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,9 +4131,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4137,6 +4147,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4161,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4175,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,9 +4194,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4189,6 +4210,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4224,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.47.3
----Next_Part(Thu_May_28_12_16_22_2026_214)--
Content-Type: Text/X-Patch; charset=us-ascii
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment;
filename="0002-Use-double-quotes-in-message.patch"
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH 1/4] Make propgraph object descriptions translatable
@ 2026-05-26 07:14 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-05-26 07:14 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
Build the whole object description from a single format string
instead.
---
src/backend/catalog/objectaddress.c | 61 ++++++++++++++++++++---------
1 file changed, 43 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..c107d0fb0e4 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,15 +4092,15 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+ Assert(objdesc.len > 0);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
ReleaseSysCache(tup);
break;
@@ -4109,6 +4112,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,9 +4131,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4137,6 +4147,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4161,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4175,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,9 +4194,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4189,6 +4210,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4224,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.47.3
----Next_Part(Thu_May_28_12_16_22_2026_214)--
Content-Type: Text/X-Patch; charset=us-ascii
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment;
filename="0002-Use-double-quotes-in-message.patch"
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH 1/4] Make propgraph object descriptions translatable
@ 2026-05-26 07:14 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-05-26 07:14 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
Build the whole object description from a single format string
instead.
---
src/backend/catalog/objectaddress.c | 61 ++++++++++++++++++++---------
1 file changed, 43 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..c107d0fb0e4 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,15 +4092,15 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+ Assert(objdesc.len > 0);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
ReleaseSysCache(tup);
break;
@@ -4109,6 +4112,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,9 +4131,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4137,6 +4147,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4161,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4175,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,9 +4194,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4189,6 +4210,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4224,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.47.3
----Next_Part(Thu_May_28_12_16_22_2026_214)--
Content-Type: Text/X-Patch; charset=us-ascii
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment;
filename="0002-Use-double-quotes-in-message.patch"
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH 1/4] Make propgraph object descriptions translatable
@ 2026-05-26 07:14 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-05-26 07:14 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
Build the whole object description from a single format string
instead.
---
src/backend/catalog/objectaddress.c | 61 ++++++++++++++++++++---------
1 file changed, 43 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..c107d0fb0e4 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,15 +4092,15 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+ Assert(objdesc.len > 0);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
ReleaseSysCache(tup);
break;
@@ -4109,6 +4112,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,9 +4131,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4137,6 +4147,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4161,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4175,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,9 +4194,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4189,6 +4210,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4224,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.47.3
----Next_Part(Thu_May_28_12_16_22_2026_214)--
Content-Type: Text/X-Patch; charset=us-ascii
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment;
filename="0002-Use-double-quotes-in-message.patch"
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH 1/4] Make propgraph object descriptions translatable
@ 2026-05-26 07:14 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-05-26 07:14 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
Build the whole object description from a single format string
instead.
---
src/backend/catalog/objectaddress.c | 61 ++++++++++++++++++++---------
1 file changed, 43 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..c107d0fb0e4 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,15 +4092,15 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+ Assert(objdesc.len > 0);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
ReleaseSysCache(tup);
break;
@@ -4109,6 +4112,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,9 +4131,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4137,6 +4147,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4161,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4175,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,9 +4194,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4189,6 +4210,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4224,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.47.3
----Next_Part(Thu_May_28_12_16_22_2026_214)--
Content-Type: Text/X-Patch; charset=us-ascii
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment;
filename="0002-Use-double-quotes-in-message.patch"
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH 1/4] Make propgraph object descriptions translatable
@ 2026-05-26 07:14 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-05-26 07:14 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
Build the whole object description from a single format string
instead.
---
src/backend/catalog/objectaddress.c | 61 ++++++++++++++++++++---------
1 file changed, 43 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..c107d0fb0e4 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,15 +4092,15 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+ Assert(objdesc.len > 0);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
ReleaseSysCache(tup);
break;
@@ -4109,6 +4112,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,9 +4131,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4137,6 +4147,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4161,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4175,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,9 +4194,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4189,6 +4210,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4224,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.47.3
----Next_Part(Thu_May_28_12_16_22_2026_214)--
Content-Type: Text/X-Patch; charset=us-ascii
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment;
filename="0002-Use-double-quotes-in-message.patch"
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH 1/4] Make propgraph object descriptions translatable
@ 2026-05-26 07:14 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-05-26 07:14 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
Build the whole object description from a single format string
instead.
---
src/backend/catalog/objectaddress.c | 61 ++++++++++++++++++++---------
1 file changed, 43 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..c107d0fb0e4 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,15 +4092,15 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+ Assert(objdesc.len > 0);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
ReleaseSysCache(tup);
break;
@@ -4109,6 +4112,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,9 +4131,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4137,6 +4147,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4161,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4175,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,9 +4194,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4189,6 +4210,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4224,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.47.3
----Next_Part(Thu_May_28_12_16_22_2026_214)--
Content-Type: Text/X-Patch; charset=us-ascii
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment;
filename="0002-Use-double-quotes-in-message.patch"
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH 1/4] Make propgraph object descriptions translatable
@ 2026-05-26 07:14 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-05-26 07:14 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
Build the whole object description from a single format string
instead.
---
src/backend/catalog/objectaddress.c | 61 ++++++++++++++++++++---------
1 file changed, 43 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..c107d0fb0e4 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,15 +4092,15 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+ Assert(objdesc.len > 0);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
ReleaseSysCache(tup);
break;
@@ -4109,6 +4112,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,9 +4131,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4137,6 +4147,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4161,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4175,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,9 +4194,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4189,6 +4210,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4224,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.47.3
----Next_Part(Thu_May_28_12_16_22_2026_214)--
Content-Type: Text/X-Patch; charset=us-ascii
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment;
filename="0002-Use-double-quotes-in-message.patch"
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH 1/4] Make propgraph object descriptions translatable
@ 2026-05-26 07:14 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-05-26 07:14 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
Build the whole object description from a single format string
instead.
---
src/backend/catalog/objectaddress.c | 61 ++++++++++++++++++++---------
1 file changed, 43 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..c107d0fb0e4 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,15 +4092,15 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+ Assert(objdesc.len > 0);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
ReleaseSysCache(tup);
break;
@@ -4109,6 +4112,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,9 +4131,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4137,6 +4147,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4161,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4175,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,9 +4194,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4189,6 +4210,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4224,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.47.3
----Next_Part(Thu_May_28_12_16_22_2026_214)--
Content-Type: Text/X-Patch; charset=us-ascii
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment;
filename="0002-Use-double-quotes-in-message.patch"
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH 1/4] Make propgraph object descriptions translatable
@ 2026-05-26 07:14 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-05-26 07:14 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
Build the whole object description from a single format string
instead.
---
src/backend/catalog/objectaddress.c | 61 ++++++++++++++++++++---------
1 file changed, 43 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..c107d0fb0e4 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,15 +4092,15 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+ Assert(objdesc.len > 0);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
ReleaseSysCache(tup);
break;
@@ -4109,6 +4112,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,9 +4131,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4137,6 +4147,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4161,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4175,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,9 +4194,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4189,6 +4210,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4224,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.47.3
----Next_Part(Thu_May_28_12_16_22_2026_214)--
Content-Type: Text/X-Patch; charset=us-ascii
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment;
filename="0002-Use-double-quotes-in-message.patch"
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH 1/4] Make propgraph object descriptions translatable
@ 2026-05-26 07:14 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-05-26 07:14 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
Build the whole object description from a single format string
instead.
---
src/backend/catalog/objectaddress.c | 61 ++++++++++++++++++++---------
1 file changed, 43 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..c107d0fb0e4 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,15 +4092,15 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+ Assert(objdesc.len > 0);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
ReleaseSysCache(tup);
break;
@@ -4109,6 +4112,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,9 +4131,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4137,6 +4147,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4161,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4175,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,9 +4194,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4189,6 +4210,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4224,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.47.3
----Next_Part(Thu_May_28_12_16_22_2026_214)--
Content-Type: Text/X-Patch; charset=us-ascii
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment;
filename="0002-Use-double-quotes-in-message.patch"
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH 1/4] Make propgraph object descriptions translatable
@ 2026-05-26 07:14 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-05-26 07:14 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
Build the whole object description from a single format string
instead.
---
src/backend/catalog/objectaddress.c | 61 ++++++++++++++++++++---------
1 file changed, 43 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..c107d0fb0e4 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,15 +4092,15 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+ Assert(objdesc.len > 0);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
ReleaseSysCache(tup);
break;
@@ -4109,6 +4112,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,9 +4131,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4137,6 +4147,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4161,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4175,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,9 +4194,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4189,6 +4210,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4224,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.47.3
----Next_Part(Thu_May_28_12_16_22_2026_214)--
Content-Type: Text/X-Patch; charset=us-ascii
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment;
filename="0002-Use-double-quotes-in-message.patch"
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH 1/4] Make propgraph object descriptions translatable
@ 2026-05-26 07:14 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-05-26 07:14 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
Build the whole object description from a single format string
instead.
---
src/backend/catalog/objectaddress.c | 61 ++++++++++++++++++++---------
1 file changed, 43 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..c107d0fb0e4 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,15 +4092,15 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+ Assert(objdesc.len > 0);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
ReleaseSysCache(tup);
break;
@@ -4109,6 +4112,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,9 +4131,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4137,6 +4147,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4161,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4175,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,9 +4194,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4189,6 +4210,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4224,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.47.3
----Next_Part(Thu_May_28_12_16_22_2026_214)--
Content-Type: Text/X-Patch; charset=us-ascii
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment;
filename="0002-Use-double-quotes-in-message.patch"
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH 1/4] Make propgraph object descriptions translatable
@ 2026-05-26 07:14 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-05-26 07:14 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
Build the whole object description from a single format string
instead.
---
src/backend/catalog/objectaddress.c | 61 ++++++++++++++++++++---------
1 file changed, 43 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..c107d0fb0e4 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,15 +4092,15 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+ Assert(objdesc.len > 0);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
ReleaseSysCache(tup);
break;
@@ -4109,6 +4112,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,9 +4131,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4137,6 +4147,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4161,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4175,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,9 +4194,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4189,6 +4210,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4224,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.47.3
----Next_Part(Thu_May_28_12_16_22_2026_214)--
Content-Type: Text/X-Patch; charset=us-ascii
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment;
filename="0002-Use-double-quotes-in-message.patch"
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH 1/4] Make propgraph object descriptions translatable
@ 2026-05-26 07:14 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-05-26 07:14 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
Build the whole object description from a single format string
instead.
---
src/backend/catalog/objectaddress.c | 61 ++++++++++++++++++++---------
1 file changed, 43 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..c107d0fb0e4 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,15 +4092,15 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+ Assert(objdesc.len > 0);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
ReleaseSysCache(tup);
break;
@@ -4109,6 +4112,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,9 +4131,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4137,6 +4147,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4161,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4175,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,9 +4194,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4189,6 +4210,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4224,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.47.3
----Next_Part(Thu_May_28_12_16_22_2026_214)--
Content-Type: Text/X-Patch; charset=us-ascii
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment;
filename="0002-Use-double-quotes-in-message.patch"
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH 1/4] Make propgraph object descriptions translatable
@ 2026-05-26 07:14 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-05-26 07:14 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
Build the whole object description from a single format string
instead.
---
src/backend/catalog/objectaddress.c | 61 ++++++++++++++++++++---------
1 file changed, 43 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..c107d0fb0e4 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,15 +4092,15 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+ Assert(objdesc.len > 0);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
ReleaseSysCache(tup);
break;
@@ -4109,6 +4112,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,9 +4131,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4137,6 +4147,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4161,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4175,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,9 +4194,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4189,6 +4210,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4224,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.47.3
----Next_Part(Thu_May_28_12_16_22_2026_214)--
Content-Type: Text/X-Patch; charset=us-ascii
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment;
filename="0002-Use-double-quotes-in-message.patch"
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH 1/4] Make propgraph object descriptions translatable
@ 2026-05-26 07:14 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-05-26 07:14 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
Build the whole object description from a single format string
instead.
---
src/backend/catalog/objectaddress.c | 61 ++++++++++++++++++++---------
1 file changed, 43 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..c107d0fb0e4 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,15 +4092,15 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+ Assert(objdesc.len > 0);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
ReleaseSysCache(tup);
break;
@@ -4109,6 +4112,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,9 +4131,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4137,6 +4147,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4161,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4175,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,9 +4194,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4189,6 +4210,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4224,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.47.3
----Next_Part(Thu_May_28_12_16_22_2026_214)--
Content-Type: Text/X-Patch; charset=us-ascii
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment;
filename="0002-Use-double-quotes-in-message.patch"
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH 1/4] Make propgraph object descriptions translatable
@ 2026-05-26 07:14 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-05-26 07:14 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
Build the whole object description from a single format string
instead.
---
src/backend/catalog/objectaddress.c | 61 ++++++++++++++++++++---------
1 file changed, 43 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..c107d0fb0e4 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,15 +4092,15 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+ Assert(objdesc.len > 0);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
ReleaseSysCache(tup);
break;
@@ -4109,6 +4112,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,9 +4131,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4137,6 +4147,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4161,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4175,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,9 +4194,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4189,6 +4210,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4224,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.47.3
----Next_Part(Thu_May_28_12_16_22_2026_214)--
Content-Type: Text/X-Patch; charset=us-ascii
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment;
filename="0002-Use-double-quotes-in-message.patch"
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH 1/4] Make propgraph object descriptions translatable
@ 2026-05-26 07:14 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-05-26 07:14 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
Build the whole object description from a single format string
instead.
---
src/backend/catalog/objectaddress.c | 61 ++++++++++++++++++++---------
1 file changed, 43 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..c107d0fb0e4 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,15 +4092,15 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+ Assert(objdesc.len > 0);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
ReleaseSysCache(tup);
break;
@@ -4109,6 +4112,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,9 +4131,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4137,6 +4147,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4161,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4175,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,9 +4194,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4189,6 +4210,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4224,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.47.3
----Next_Part(Thu_May_28_12_16_22_2026_214)--
Content-Type: Text/X-Patch; charset=us-ascii
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment;
filename="0002-Use-double-quotes-in-message.patch"
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH 1/4] Make propgraph object descriptions translatable
@ 2026-05-26 07:14 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-05-26 07:14 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
Build the whole object description from a single format string
instead.
---
src/backend/catalog/objectaddress.c | 61 ++++++++++++++++++++---------
1 file changed, 43 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..c107d0fb0e4 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,15 +4092,15 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+ Assert(objdesc.len > 0);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
ReleaseSysCache(tup);
break;
@@ -4109,6 +4112,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,9 +4131,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4137,6 +4147,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4161,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4175,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,9 +4194,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4189,6 +4210,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4224,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.47.3
----Next_Part(Thu_May_28_12_16_22_2026_214)--
Content-Type: Text/X-Patch; charset=us-ascii
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment;
filename="0002-Use-double-quotes-in-message.patch"
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH 1/4] Make propgraph object descriptions translatable
@ 2026-05-26 07:14 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-05-26 07:14 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
Build the whole object description from a single format string
instead.
---
src/backend/catalog/objectaddress.c | 61 ++++++++++++++++++++---------
1 file changed, 43 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..c107d0fb0e4 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,15 +4092,15 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+ Assert(objdesc.len > 0);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
ReleaseSysCache(tup);
break;
@@ -4109,6 +4112,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,9 +4131,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4137,6 +4147,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4161,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4175,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,9 +4194,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4189,6 +4210,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4224,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.47.3
----Next_Part(Thu_May_28_12_16_22_2026_214)--
Content-Type: Text/X-Patch; charset=us-ascii
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment;
filename="0002-Use-double-quotes-in-message.patch"
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH 1/4] Make propgraph object descriptions translatable
@ 2026-05-26 07:14 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-05-26 07:14 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
Build the whole object description from a single format string
instead.
---
src/backend/catalog/objectaddress.c | 61 ++++++++++++++++++++---------
1 file changed, 43 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..c107d0fb0e4 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,15 +4092,15 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+ Assert(objdesc.len > 0);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
ReleaseSysCache(tup);
break;
@@ -4109,6 +4112,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,9 +4131,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4137,6 +4147,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4161,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4175,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,9 +4194,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4189,6 +4210,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4224,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.47.3
----Next_Part(Thu_May_28_12_16_22_2026_214)--
Content-Type: Text/X-Patch; charset=us-ascii
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment;
filename="0002-Use-double-quotes-in-message.patch"
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH 1/4] Make propgraph object descriptions translatable
@ 2026-05-26 07:14 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-05-26 07:14 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
Build the whole object description from a single format string
instead.
---
src/backend/catalog/objectaddress.c | 61 ++++++++++++++++++++---------
1 file changed, 43 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..c107d0fb0e4 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,15 +4092,15 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+ Assert(objdesc.len > 0);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
ReleaseSysCache(tup);
break;
@@ -4109,6 +4112,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,9 +4131,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4137,6 +4147,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4161,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4175,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,9 +4194,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4189,6 +4210,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4224,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.47.3
----Next_Part(Thu_May_28_12_16_22_2026_214)--
Content-Type: Text/X-Patch; charset=us-ascii
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment;
filename="0002-Use-double-quotes-in-message.patch"
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH 1/4] Make propgraph object descriptions translatable
@ 2026-05-26 07:14 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-05-26 07:14 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
Build the whole object description from a single format string
instead.
---
src/backend/catalog/objectaddress.c | 61 ++++++++++++++++++++---------
1 file changed, 43 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..c107d0fb0e4 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,15 +4092,15 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+ Assert(objdesc.len > 0);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
ReleaseSysCache(tup);
break;
@@ -4109,6 +4112,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,9 +4131,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4137,6 +4147,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4161,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4175,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,9 +4194,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4189,6 +4210,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4224,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.47.3
----Next_Part(Thu_May_28_12_16_22_2026_214)--
Content-Type: Text/X-Patch; charset=us-ascii
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment;
filename="0002-Use-double-quotes-in-message.patch"
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH 1/4] Make propgraph object descriptions translatable
@ 2026-05-26 07:14 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-05-26 07:14 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
Build the whole object description from a single format string
instead.
---
src/backend/catalog/objectaddress.c | 61 ++++++++++++++++++++---------
1 file changed, 43 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..c107d0fb0e4 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,15 +4092,15 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+ Assert(objdesc.len > 0);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
ReleaseSysCache(tup);
break;
@@ -4109,6 +4112,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,9 +4131,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4137,6 +4147,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4161,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4175,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,9 +4194,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4189,6 +4210,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4224,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.47.3
----Next_Part(Thu_May_28_12_16_22_2026_214)--
Content-Type: Text/X-Patch; charset=us-ascii
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment;
filename="0002-Use-double-quotes-in-message.patch"
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH 1/4] Make propgraph object descriptions translatable
@ 2026-05-26 07:14 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-05-26 07:14 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
Build the whole object description from a single format string
instead.
---
src/backend/catalog/objectaddress.c | 61 ++++++++++++++++++++---------
1 file changed, 43 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..c107d0fb0e4 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,15 +4092,15 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+ Assert(objdesc.len > 0);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
ReleaseSysCache(tup);
break;
@@ -4109,6 +4112,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,9 +4131,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4137,6 +4147,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4161,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4175,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,9 +4194,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4189,6 +4210,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4224,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.47.3
----Next_Part(Thu_May_28_12_16_22_2026_214)--
Content-Type: Text/X-Patch; charset=us-ascii
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment;
filename="0002-Use-double-quotes-in-message.patch"
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH 1/4] Make propgraph object descriptions translatable
@ 2026-05-26 07:14 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-05-26 07:14 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
Build the whole object description from a single format string
instead.
---
src/backend/catalog/objectaddress.c | 61 ++++++++++++++++++++---------
1 file changed, 43 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..c107d0fb0e4 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,15 +4092,15 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+ Assert(objdesc.len > 0);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
ReleaseSysCache(tup);
break;
@@ -4109,6 +4112,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,9 +4131,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4137,6 +4147,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4161,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4175,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,9 +4194,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4189,6 +4210,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4224,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.47.3
----Next_Part(Thu_May_28_12_16_22_2026_214)--
Content-Type: Text/X-Patch; charset=us-ascii
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment;
filename="0002-Use-double-quotes-in-message.patch"
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH 1/4] Make propgraph object descriptions translatable
@ 2026-05-26 07:14 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-05-26 07:14 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
Build the whole object description from a single format string
instead.
---
src/backend/catalog/objectaddress.c | 61 ++++++++++++++++++++---------
1 file changed, 43 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..c107d0fb0e4 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,15 +4092,15 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+ Assert(objdesc.len > 0);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
ReleaseSysCache(tup);
break;
@@ -4109,6 +4112,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,9 +4131,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4137,6 +4147,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4161,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4175,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,9 +4194,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4189,6 +4210,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4224,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.47.3
----Next_Part(Thu_May_28_12_16_22_2026_214)--
Content-Type: Text/X-Patch; charset=us-ascii
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment;
filename="0002-Use-double-quotes-in-message.patch"
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH 1/4] Make propgraph object descriptions translatable
@ 2026-05-26 07:14 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-05-26 07:14 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
Build the whole object description from a single format string
instead.
---
src/backend/catalog/objectaddress.c | 61 ++++++++++++++++++++---------
1 file changed, 43 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..c107d0fb0e4 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,15 +4092,15 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+ Assert(objdesc.len > 0);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
ReleaseSysCache(tup);
break;
@@ -4109,6 +4112,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,9 +4131,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4137,6 +4147,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4161,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4175,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,9 +4194,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4189,6 +4210,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4224,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.47.3
----Next_Part(Thu_May_28_12_16_22_2026_214)--
Content-Type: Text/X-Patch; charset=us-ascii
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment;
filename="0002-Use-double-quotes-in-message.patch"
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH 1/4] Make propgraph object descriptions translatable
@ 2026-05-26 07:14 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-05-26 07:14 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
Build the whole object description from a single format string
instead.
---
src/backend/catalog/objectaddress.c | 61 ++++++++++++++++++++---------
1 file changed, 43 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..c107d0fb0e4 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,15 +4092,15 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+ Assert(objdesc.len > 0);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
ReleaseSysCache(tup);
break;
@@ -4109,6 +4112,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,9 +4131,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4137,6 +4147,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4161,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4175,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,9 +4194,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4189,6 +4210,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4224,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.47.3
----Next_Part(Thu_May_28_12_16_22_2026_214)--
Content-Type: Text/X-Patch; charset=us-ascii
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment;
filename="0002-Use-double-quotes-in-message.patch"
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH 1/4] Make propgraph object descriptions translatable
@ 2026-05-26 07:14 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-05-26 07:14 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
Build the whole object description from a single format string
instead.
---
src/backend/catalog/objectaddress.c | 61 ++++++++++++++++++++---------
1 file changed, 43 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..c107d0fb0e4 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,15 +4092,15 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+ Assert(objdesc.len > 0);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
ReleaseSysCache(tup);
break;
@@ -4109,6 +4112,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,9 +4131,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4137,6 +4147,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4161,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4175,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,9 +4194,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4189,6 +4210,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4224,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.47.3
----Next_Part(Thu_May_28_12_16_22_2026_214)--
Content-Type: Text/X-Patch; charset=us-ascii
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment;
filename="0002-Use-double-quotes-in-message.patch"
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH 1/4] Make propgraph object descriptions translatable
@ 2026-05-26 07:14 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-05-26 07:14 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
Build the whole object description from a single format string
instead.
---
src/backend/catalog/objectaddress.c | 61 ++++++++++++++++++++---------
1 file changed, 43 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..c107d0fb0e4 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,15 +4092,15 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+ Assert(objdesc.len > 0);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
ReleaseSysCache(tup);
break;
@@ -4109,6 +4112,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,9 +4131,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4137,6 +4147,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4161,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4175,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,9 +4194,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4189,6 +4210,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4224,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.47.3
----Next_Part(Thu_May_28_12_16_22_2026_214)--
Content-Type: Text/X-Patch; charset=us-ascii
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment;
filename="0002-Use-double-quotes-in-message.patch"
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH 1/4] Make propgraph object descriptions translatable
@ 2026-05-26 07:14 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-05-26 07:14 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
Build the whole object description from a single format string
instead.
---
src/backend/catalog/objectaddress.c | 61 ++++++++++++++++++++---------
1 file changed, 43 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..c107d0fb0e4 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,15 +4092,15 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+ Assert(objdesc.len > 0);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
ReleaseSysCache(tup);
break;
@@ -4109,6 +4112,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,9 +4131,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4137,6 +4147,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4161,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4175,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,9 +4194,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4189,6 +4210,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4224,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.47.3
----Next_Part(Thu_May_28_12_16_22_2026_214)--
Content-Type: Text/X-Patch; charset=us-ascii
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment;
filename="0002-Use-double-quotes-in-message.patch"
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH 1/4] Make propgraph object descriptions translatable
@ 2026-05-26 07:14 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-05-26 07:14 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
Build the whole object description from a single format string
instead.
---
src/backend/catalog/objectaddress.c | 61 ++++++++++++++++++++---------
1 file changed, 43 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..c107d0fb0e4 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,15 +4092,15 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+ Assert(objdesc.len > 0);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
ReleaseSysCache(tup);
break;
@@ -4109,6 +4112,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,9 +4131,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4137,6 +4147,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4161,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4175,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,9 +4194,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4189,6 +4210,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4224,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.47.3
----Next_Part(Thu_May_28_12_16_22_2026_214)--
Content-Type: Text/X-Patch; charset=us-ascii
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment;
filename="0002-Use-double-quotes-in-message.patch"
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH 1/4] Make propgraph object descriptions translatable
@ 2026-05-26 07:14 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-05-26 07:14 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
Build the whole object description from a single format string
instead.
---
src/backend/catalog/objectaddress.c | 61 ++++++++++++++++++++---------
1 file changed, 43 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..c107d0fb0e4 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,15 +4092,15 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+ Assert(objdesc.len > 0);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
ReleaseSysCache(tup);
break;
@@ -4109,6 +4112,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,9 +4131,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4137,6 +4147,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4161,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4175,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,9 +4194,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4189,6 +4210,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4224,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.47.3
----Next_Part(Thu_May_28_12_16_22_2026_214)--
Content-Type: Text/X-Patch; charset=us-ascii
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment;
filename="0002-Use-double-quotes-in-message.patch"
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH 1/4] Make propgraph object descriptions translatable
@ 2026-05-26 07:14 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-05-26 07:14 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
Build the whole object description from a single format string
instead.
---
src/backend/catalog/objectaddress.c | 61 ++++++++++++++++++++---------
1 file changed, 43 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..c107d0fb0e4 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,15 +4092,15 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+ Assert(objdesc.len > 0);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
ReleaseSysCache(tup);
break;
@@ -4109,6 +4112,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,9 +4131,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4137,6 +4147,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4161,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4175,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,9 +4194,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4189,6 +4210,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4224,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.47.3
----Next_Part(Thu_May_28_12_16_22_2026_214)--
Content-Type: Text/X-Patch; charset=us-ascii
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment;
filename="0002-Use-double-quotes-in-message.patch"
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH 1/4] Make propgraph object descriptions translatable
@ 2026-05-26 07:14 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-05-26 07:14 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
Build the whole object description from a single format string
instead.
---
src/backend/catalog/objectaddress.c | 61 ++++++++++++++++++++---------
1 file changed, 43 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..c107d0fb0e4 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,15 +4092,15 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+ Assert(objdesc.len > 0);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
ReleaseSysCache(tup);
break;
@@ -4109,6 +4112,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,9 +4131,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4137,6 +4147,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4161,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4175,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,9 +4194,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4189,6 +4210,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4224,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.47.3
----Next_Part(Thu_May_28_12_16_22_2026_214)--
Content-Type: Text/X-Patch; charset=us-ascii
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment;
filename="0002-Use-double-quotes-in-message.patch"
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH 1/4] Make propgraph object descriptions translatable
@ 2026-05-26 07:14 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-05-26 07:14 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
Build the whole object description from a single format string
instead.
---
src/backend/catalog/objectaddress.c | 61 ++++++++++++++++++++---------
1 file changed, 43 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..c107d0fb0e4 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,15 +4092,15 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+ Assert(objdesc.len > 0);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
ReleaseSysCache(tup);
break;
@@ -4109,6 +4112,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,9 +4131,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4137,6 +4147,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4161,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4175,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,9 +4194,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4189,6 +4210,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4224,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.47.3
----Next_Part(Thu_May_28_12_16_22_2026_214)--
Content-Type: Text/X-Patch; charset=us-ascii
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment;
filename="0002-Use-double-quotes-in-message.patch"
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH 1/4] Make propgraph object descriptions translatable
@ 2026-05-26 07:14 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-05-26 07:14 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
Build the whole object description from a single format string
instead.
---
src/backend/catalog/objectaddress.c | 61 ++++++++++++++++++++---------
1 file changed, 43 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..c107d0fb0e4 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,15 +4092,15 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+ Assert(objdesc.len > 0);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
ReleaseSysCache(tup);
break;
@@ -4109,6 +4112,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,9 +4131,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4137,6 +4147,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4161,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4175,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,9 +4194,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4189,6 +4210,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4224,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.47.3
----Next_Part(Thu_May_28_12_16_22_2026_214)--
Content-Type: Text/X-Patch; charset=us-ascii
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment;
filename="0002-Use-double-quotes-in-message.patch"
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH 1/4] Make propgraph object descriptions translatable
@ 2026-05-26 07:14 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-05-26 07:14 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
Build the whole object description from a single format string
instead.
---
src/backend/catalog/objectaddress.c | 61 ++++++++++++++++++++---------
1 file changed, 43 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..c107d0fb0e4 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,15 +4092,15 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+ Assert(objdesc.len > 0);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
ReleaseSysCache(tup);
break;
@@ -4109,6 +4112,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,9 +4131,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4137,6 +4147,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4161,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4175,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,9 +4194,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4189,6 +4210,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4224,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.47.3
----Next_Part(Thu_May_28_12_16_22_2026_214)--
Content-Type: Text/X-Patch; charset=us-ascii
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment;
filename="0002-Use-double-quotes-in-message.patch"
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH 1/4] Make propgraph object descriptions translatable
@ 2026-05-26 07:14 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-05-26 07:14 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
Build the whole object description from a single format string
instead.
---
src/backend/catalog/objectaddress.c | 61 ++++++++++++++++++++---------
1 file changed, 43 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..c107d0fb0e4 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,15 +4092,15 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+ Assert(objdesc.len > 0);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
ReleaseSysCache(tup);
break;
@@ -4109,6 +4112,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,9 +4131,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4137,6 +4147,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4161,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4175,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,9 +4194,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4189,6 +4210,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4224,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.47.3
----Next_Part(Thu_May_28_12_16_22_2026_214)--
Content-Type: Text/X-Patch; charset=us-ascii
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment;
filename="0002-Use-double-quotes-in-message.patch"
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH 1/4] Make propgraph object descriptions translatable
@ 2026-05-26 07:14 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-05-26 07:14 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
Build the whole object description from a single format string
instead.
---
src/backend/catalog/objectaddress.c | 61 ++++++++++++++++++++---------
1 file changed, 43 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..c107d0fb0e4 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,15 +4092,15 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+ Assert(objdesc.len > 0);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
ReleaseSysCache(tup);
break;
@@ -4109,6 +4112,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,9 +4131,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4137,6 +4147,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4161,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4175,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,9 +4194,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4189,6 +4210,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4224,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.47.3
----Next_Part(Thu_May_28_12_16_22_2026_214)--
Content-Type: Text/X-Patch; charset=us-ascii
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment;
filename="0002-Use-double-quotes-in-message.patch"
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH 1/4] Make propgraph object descriptions translatable
@ 2026-05-26 07:14 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-05-26 07:14 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
Build the whole object description from a single format string
instead.
---
src/backend/catalog/objectaddress.c | 61 ++++++++++++++++++++---------
1 file changed, 43 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..c107d0fb0e4 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,15 +4092,15 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+ Assert(objdesc.len > 0);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
ReleaseSysCache(tup);
break;
@@ -4109,6 +4112,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,9 +4131,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4137,6 +4147,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4161,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4175,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,9 +4194,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4189,6 +4210,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4224,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.47.3
----Next_Part(Thu_May_28_12_16_22_2026_214)--
Content-Type: Text/X-Patch; charset=us-ascii
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment;
filename="0002-Use-double-quotes-in-message.patch"
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH 1/4] Make propgraph object descriptions translatable
@ 2026-05-26 07:14 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-05-26 07:14 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
Build the whole object description from a single format string
instead.
---
src/backend/catalog/objectaddress.c | 61 ++++++++++++++++++++---------
1 file changed, 43 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..c107d0fb0e4 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,15 +4092,15 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+ Assert(objdesc.len > 0);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
ReleaseSysCache(tup);
break;
@@ -4109,6 +4112,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,9 +4131,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4137,6 +4147,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4161,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4175,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,9 +4194,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4189,6 +4210,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4224,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.47.3
----Next_Part(Thu_May_28_12_16_22_2026_214)--
Content-Type: Text/X-Patch; charset=us-ascii
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment;
filename="0002-Use-double-quotes-in-message.patch"
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH 1/4] Make propgraph object descriptions translatable
@ 2026-05-26 07:14 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-05-26 07:14 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
Build the whole object description from a single format string
instead.
---
src/backend/catalog/objectaddress.c | 61 ++++++++++++++++++++---------
1 file changed, 43 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..c107d0fb0e4 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,15 +4092,15 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+ Assert(objdesc.len > 0);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
ReleaseSysCache(tup);
break;
@@ -4109,6 +4112,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,9 +4131,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4137,6 +4147,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4161,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4175,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,9 +4194,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4189,6 +4210,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4224,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.47.3
----Next_Part(Thu_May_28_12_16_22_2026_214)--
Content-Type: Text/X-Patch; charset=us-ascii
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment;
filename="0002-Use-double-quotes-in-message.patch"
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH 1/4] Make propgraph object descriptions translatable
@ 2026-05-26 07:14 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-05-26 07:14 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
Build the whole object description from a single format string
instead.
---
src/backend/catalog/objectaddress.c | 61 ++++++++++++++++++++---------
1 file changed, 43 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..c107d0fb0e4 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,15 +4092,15 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+ Assert(objdesc.len > 0);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
ReleaseSysCache(tup);
break;
@@ -4109,6 +4112,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,9 +4131,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4137,6 +4147,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4161,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4175,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,9 +4194,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4189,6 +4210,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4224,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.47.3
----Next_Part(Thu_May_28_12_16_22_2026_214)--
Content-Type: Text/X-Patch; charset=us-ascii
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment;
filename="0002-Use-double-quotes-in-message.patch"
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH 1/4] Make propgraph object descriptions translatable
@ 2026-05-26 07:14 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-05-26 07:14 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
Build the whole object description from a single format string
instead.
---
src/backend/catalog/objectaddress.c | 61 ++++++++++++++++++++---------
1 file changed, 43 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..c107d0fb0e4 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,15 +4092,15 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+ Assert(objdesc.len > 0);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
ReleaseSysCache(tup);
break;
@@ -4109,6 +4112,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,9 +4131,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4137,6 +4147,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4161,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4175,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,9 +4194,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4189,6 +4210,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4224,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.47.3
----Next_Part(Thu_May_28_12_16_22_2026_214)--
Content-Type: Text/X-Patch; charset=us-ascii
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment;
filename="0002-Use-double-quotes-in-message.patch"
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH 1/4] Make propgraph object descriptions translatable
@ 2026-05-26 07:14 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-05-26 07:14 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
Build the whole object description from a single format string
instead.
---
src/backend/catalog/objectaddress.c | 61 ++++++++++++++++++++---------
1 file changed, 43 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..c107d0fb0e4 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,15 +4092,15 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+ Assert(objdesc.len > 0);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
ReleaseSysCache(tup);
break;
@@ -4109,6 +4112,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,9 +4131,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4137,6 +4147,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4161,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4175,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,9 +4194,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4189,6 +4210,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4224,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.47.3
----Next_Part(Thu_May_28_12_16_22_2026_214)--
Content-Type: Text/X-Patch; charset=us-ascii
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment;
filename="0002-Use-double-quotes-in-message.patch"
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH 1/4] Make propgraph object descriptions translatable
@ 2026-05-26 07:14 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-05-26 07:14 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
Build the whole object description from a single format string
instead.
---
src/backend/catalog/objectaddress.c | 61 ++++++++++++++++++++---------
1 file changed, 43 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..c107d0fb0e4 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,15 +4092,15 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+ Assert(objdesc.len > 0);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
ReleaseSysCache(tup);
break;
@@ -4109,6 +4112,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,9 +4131,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4137,6 +4147,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4161,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4175,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,9 +4194,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4189,6 +4210,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4224,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.47.3
----Next_Part(Thu_May_28_12_16_22_2026_214)--
Content-Type: Text/X-Patch; charset=us-ascii
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment;
filename="0002-Use-double-quotes-in-message.patch"
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH 1/4] Make propgraph object descriptions translatable
@ 2026-05-26 07:14 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-05-26 07:14 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
Build the whole object description from a single format string
instead.
---
src/backend/catalog/objectaddress.c | 61 ++++++++++++++++++++---------
1 file changed, 43 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..c107d0fb0e4 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,15 +4092,15 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+ Assert(objdesc.len > 0);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
ReleaseSysCache(tup);
break;
@@ -4109,6 +4112,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,9 +4131,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4137,6 +4147,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4161,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4175,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,9 +4194,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4189,6 +4210,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4224,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.47.3
----Next_Part(Thu_May_28_12_16_22_2026_214)--
Content-Type: Text/X-Patch; charset=us-ascii
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment;
filename="0002-Use-double-quotes-in-message.patch"
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH 1/4] Make propgraph object descriptions translatable
@ 2026-05-26 07:14 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-05-26 07:14 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
Build the whole object description from a single format string
instead.
---
src/backend/catalog/objectaddress.c | 61 ++++++++++++++++++++---------
1 file changed, 43 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..c107d0fb0e4 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,15 +4092,15 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+ Assert(objdesc.len > 0);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
ReleaseSysCache(tup);
break;
@@ -4109,6 +4112,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,9 +4131,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4137,6 +4147,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4161,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4175,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,9 +4194,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4189,6 +4210,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4224,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.47.3
----Next_Part(Thu_May_28_12_16_22_2026_214)--
Content-Type: Text/X-Patch; charset=us-ascii
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment;
filename="0002-Use-double-quotes-in-message.patch"
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH 1/4] Make propgraph object descriptions translatable
@ 2026-05-26 07:14 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-05-26 07:14 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
Build the whole object description from a single format string
instead.
---
src/backend/catalog/objectaddress.c | 61 ++++++++++++++++++++---------
1 file changed, 43 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..c107d0fb0e4 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,15 +4092,15 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+ Assert(objdesc.len > 0);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
ReleaseSysCache(tup);
break;
@@ -4109,6 +4112,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,9 +4131,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4137,6 +4147,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4161,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4175,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,9 +4194,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4189,6 +4210,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4224,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.47.3
----Next_Part(Thu_May_28_12_16_22_2026_214)--
Content-Type: Text/X-Patch; charset=us-ascii
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment;
filename="0002-Use-double-quotes-in-message.patch"
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH 1/4] Make propgraph object descriptions translatable
@ 2026-05-26 07:14 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-05-26 07:14 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
Build the whole object description from a single format string
instead.
---
src/backend/catalog/objectaddress.c | 61 ++++++++++++++++++++---------
1 file changed, 43 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..c107d0fb0e4 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,15 +4092,15 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+ Assert(objdesc.len > 0);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
ReleaseSysCache(tup);
break;
@@ -4109,6 +4112,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,9 +4131,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4137,6 +4147,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4161,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4175,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,9 +4194,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4189,6 +4210,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4224,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.47.3
----Next_Part(Thu_May_28_12_16_22_2026_214)--
Content-Type: Text/X-Patch; charset=us-ascii
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment;
filename="0002-Use-double-quotes-in-message.patch"
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH 1/4] Make propgraph object descriptions translatable
@ 2026-05-26 07:14 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-05-26 07:14 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
Build the whole object description from a single format string
instead.
---
src/backend/catalog/objectaddress.c | 61 ++++++++++++++++++++---------
1 file changed, 43 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..c107d0fb0e4 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,15 +4092,15 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+ Assert(objdesc.len > 0);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
ReleaseSysCache(tup);
break;
@@ -4109,6 +4112,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,9 +4131,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4137,6 +4147,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4161,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4175,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,9 +4194,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4189,6 +4210,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4224,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.47.3
----Next_Part(Thu_May_28_12_16_22_2026_214)--
Content-Type: Text/X-Patch; charset=us-ascii
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment;
filename="0002-Use-double-quotes-in-message.patch"
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH 1/4] Make propgraph object descriptions translatable
@ 2026-05-26 07:14 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-05-26 07:14 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
Build the whole object description from a single format string
instead.
---
src/backend/catalog/objectaddress.c | 61 ++++++++++++++++++++---------
1 file changed, 43 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..c107d0fb0e4 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,15 +4092,15 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+ Assert(objdesc.len > 0);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
ReleaseSysCache(tup);
break;
@@ -4109,6 +4112,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,9 +4131,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4137,6 +4147,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4161,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4175,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,9 +4194,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4189,6 +4210,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4224,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.47.3
----Next_Part(Thu_May_28_12_16_22_2026_214)--
Content-Type: Text/X-Patch; charset=us-ascii
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment;
filename="0002-Use-double-quotes-in-message.patch"
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH 1/4] Make propgraph object descriptions translatable
@ 2026-05-26 07:14 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-05-26 07:14 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
Build the whole object description from a single format string
instead.
---
src/backend/catalog/objectaddress.c | 61 ++++++++++++++++++++---------
1 file changed, 43 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..c107d0fb0e4 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,15 +4092,15 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+ Assert(objdesc.len > 0);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
ReleaseSysCache(tup);
break;
@@ -4109,6 +4112,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,9 +4131,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4137,6 +4147,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4161,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4175,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,9 +4194,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4189,6 +4210,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4224,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.47.3
----Next_Part(Thu_May_28_12_16_22_2026_214)--
Content-Type: Text/X-Patch; charset=us-ascii
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment;
filename="0002-Use-double-quotes-in-message.patch"
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH 1/4] Make propgraph object descriptions translatable
@ 2026-05-26 07:14 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-05-26 07:14 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
Build the whole object description from a single format string
instead.
---
src/backend/catalog/objectaddress.c | 61 ++++++++++++++++++++---------
1 file changed, 43 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..c107d0fb0e4 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,15 +4092,15 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+ Assert(objdesc.len > 0);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
ReleaseSysCache(tup);
break;
@@ -4109,6 +4112,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,9 +4131,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4137,6 +4147,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4161,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4175,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,9 +4194,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4189,6 +4210,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4224,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.47.3
----Next_Part(Thu_May_28_12_16_22_2026_214)--
Content-Type: Text/X-Patch; charset=us-ascii
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment;
filename="0002-Use-double-quotes-in-message.patch"
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH 1/4] Make propgraph object descriptions translatable
@ 2026-05-26 07:14 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-05-26 07:14 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
Build the whole object description from a single format string
instead.
---
src/backend/catalog/objectaddress.c | 61 ++++++++++++++++++++---------
1 file changed, 43 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..c107d0fb0e4 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,15 +4092,15 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+ Assert(objdesc.len > 0);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
ReleaseSysCache(tup);
break;
@@ -4109,6 +4112,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,9 +4131,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4137,6 +4147,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4161,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4175,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,9 +4194,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4189,6 +4210,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4224,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.47.3
----Next_Part(Thu_May_28_12_16_22_2026_214)--
Content-Type: Text/X-Patch; charset=us-ascii
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment;
filename="0002-Use-double-quotes-in-message.patch"
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH 1/4] Make propgraph object descriptions translatable
@ 2026-05-26 07:14 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-05-26 07:14 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
Build the whole object description from a single format string
instead.
---
src/backend/catalog/objectaddress.c | 61 ++++++++++++++++++++---------
1 file changed, 43 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..c107d0fb0e4 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,15 +4092,15 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+ Assert(objdesc.len > 0);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
ReleaseSysCache(tup);
break;
@@ -4109,6 +4112,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,9 +4131,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4137,6 +4147,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4161,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4175,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,9 +4194,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4189,6 +4210,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4224,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.47.3
----Next_Part(Thu_May_28_12_16_22_2026_214)--
Content-Type: Text/X-Patch; charset=us-ascii
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment;
filename="0002-Use-double-quotes-in-message.patch"
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH 1/4] Make propgraph object descriptions translatable
@ 2026-05-26 07:14 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-05-26 07:14 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
Build the whole object description from a single format string
instead.
---
src/backend/catalog/objectaddress.c | 61 ++++++++++++++++++++---------
1 file changed, 43 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..c107d0fb0e4 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,15 +4092,15 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+ Assert(objdesc.len > 0);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
ReleaseSysCache(tup);
break;
@@ -4109,6 +4112,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,9 +4131,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4137,6 +4147,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4161,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4175,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,9 +4194,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4189,6 +4210,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4224,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.47.3
----Next_Part(Thu_May_28_12_16_22_2026_214)--
Content-Type: Text/X-Patch; charset=us-ascii
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment;
filename="0002-Use-double-quotes-in-message.patch"
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH 1/4] Make propgraph object descriptions translatable
@ 2026-05-26 07:14 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-05-26 07:14 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
Build the whole object description from a single format string
instead.
---
src/backend/catalog/objectaddress.c | 61 ++++++++++++++++++++---------
1 file changed, 43 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..c107d0fb0e4 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,15 +4092,15 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+ Assert(objdesc.len > 0);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
ReleaseSysCache(tup);
break;
@@ -4109,6 +4112,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,9 +4131,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4137,6 +4147,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4161,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4175,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,9 +4194,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4189,6 +4210,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4224,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.47.3
----Next_Part(Thu_May_28_12_16_22_2026_214)--
Content-Type: Text/X-Patch; charset=us-ascii
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment;
filename="0002-Use-double-quotes-in-message.patch"
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH 1/4] Make propgraph object descriptions translatable
@ 2026-05-26 07:14 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-05-26 07:14 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
Build the whole object description from a single format string
instead.
---
src/backend/catalog/objectaddress.c | 61 ++++++++++++++++++++---------
1 file changed, 43 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..c107d0fb0e4 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,15 +4092,15 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+ Assert(objdesc.len > 0);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
ReleaseSysCache(tup);
break;
@@ -4109,6 +4112,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,9 +4131,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4137,6 +4147,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4161,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4175,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,9 +4194,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4189,6 +4210,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4224,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.47.3
----Next_Part(Thu_May_28_12_16_22_2026_214)--
Content-Type: Text/X-Patch; charset=us-ascii
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment;
filename="0002-Use-double-quotes-in-message.patch"
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH 1/4] Make propgraph object descriptions translatable
@ 2026-05-26 07:14 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-05-26 07:14 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
Build the whole object description from a single format string
instead.
---
src/backend/catalog/objectaddress.c | 61 ++++++++++++++++++++---------
1 file changed, 43 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..c107d0fb0e4 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,15 +4092,15 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+ Assert(objdesc.len > 0);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
ReleaseSysCache(tup);
break;
@@ -4109,6 +4112,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,9 +4131,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4137,6 +4147,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4161,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4175,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,9 +4194,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4189,6 +4210,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4224,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.47.3
----Next_Part(Thu_May_28_12_16_22_2026_214)--
Content-Type: Text/X-Patch; charset=us-ascii
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment;
filename="0002-Use-double-quotes-in-message.patch"
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH 1/4] Make propgraph object descriptions translatable
@ 2026-05-26 07:14 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-05-26 07:14 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
Build the whole object description from a single format string
instead.
---
src/backend/catalog/objectaddress.c | 61 ++++++++++++++++++++---------
1 file changed, 43 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..c107d0fb0e4 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,15 +4092,15 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+ Assert(objdesc.len > 0);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
ReleaseSysCache(tup);
break;
@@ -4109,6 +4112,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,9 +4131,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4137,6 +4147,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4161,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4175,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,9 +4194,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4189,6 +4210,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4224,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.47.3
----Next_Part(Thu_May_28_12_16_22_2026_214)--
Content-Type: Text/X-Patch; charset=us-ascii
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment;
filename="0002-Use-double-quotes-in-message.patch"
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH 1/4] Make propgraph object descriptions translatable
@ 2026-05-26 07:14 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-05-26 07:14 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
Build the whole object description from a single format string
instead.
---
src/backend/catalog/objectaddress.c | 61 ++++++++++++++++++++---------
1 file changed, 43 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..c107d0fb0e4 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,15 +4092,15 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+ Assert(objdesc.len > 0);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
ReleaseSysCache(tup);
break;
@@ -4109,6 +4112,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,9 +4131,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4137,6 +4147,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4161,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4175,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,9 +4194,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4189,6 +4210,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4224,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.47.3
----Next_Part(Thu_May_28_12_16_22_2026_214)--
Content-Type: Text/X-Patch; charset=us-ascii
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment;
filename="0002-Use-double-quotes-in-message.patch"
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH 1/4] Make propgraph object descriptions translatable
@ 2026-05-26 07:14 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-05-26 07:14 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
Build the whole object description from a single format string
instead.
---
src/backend/catalog/objectaddress.c | 61 ++++++++++++++++++++---------
1 file changed, 43 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..c107d0fb0e4 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,15 +4092,15 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+ Assert(objdesc.len > 0);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
ReleaseSysCache(tup);
break;
@@ -4109,6 +4112,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,9 +4131,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4137,6 +4147,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4161,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4175,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,9 +4194,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4189,6 +4210,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4224,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.47.3
----Next_Part(Thu_May_28_12_16_22_2026_214)--
Content-Type: Text/X-Patch; charset=us-ascii
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment;
filename="0002-Use-double-quotes-in-message.patch"
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH 1/4] Make propgraph object descriptions translatable
@ 2026-05-26 07:14 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-05-26 07:14 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
Build the whole object description from a single format string
instead.
---
src/backend/catalog/objectaddress.c | 61 ++++++++++++++++++++---------
1 file changed, 43 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..c107d0fb0e4 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,15 +4092,15 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+ Assert(objdesc.len > 0);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
ReleaseSysCache(tup);
break;
@@ -4109,6 +4112,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,9 +4131,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4137,6 +4147,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4161,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4175,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,9 +4194,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4189,6 +4210,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4224,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.47.3
----Next_Part(Thu_May_28_12_16_22_2026_214)--
Content-Type: Text/X-Patch; charset=us-ascii
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment;
filename="0002-Use-double-quotes-in-message.patch"
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH 1/4] Make propgraph object descriptions translatable
@ 2026-05-26 07:14 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-05-26 07:14 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
Build the whole object description from a single format string
instead.
---
src/backend/catalog/objectaddress.c | 61 ++++++++++++++++++++---------
1 file changed, 43 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..c107d0fb0e4 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,15 +4092,15 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+ Assert(objdesc.len > 0);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
ReleaseSysCache(tup);
break;
@@ -4109,6 +4112,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,9 +4131,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4137,6 +4147,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4161,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4175,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,9 +4194,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4189,6 +4210,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4224,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.47.3
----Next_Part(Thu_May_28_12_16_22_2026_214)--
Content-Type: Text/X-Patch; charset=us-ascii
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment;
filename="0002-Use-double-quotes-in-message.patch"
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH 1/4] Make propgraph object descriptions translatable
@ 2026-05-26 07:14 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-05-26 07:14 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
Build the whole object description from a single format string
instead.
---
src/backend/catalog/objectaddress.c | 61 ++++++++++++++++++++---------
1 file changed, 43 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..c107d0fb0e4 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,15 +4092,15 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+ Assert(objdesc.len > 0);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
ReleaseSysCache(tup);
break;
@@ -4109,6 +4112,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,9 +4131,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4137,6 +4147,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4161,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4175,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,9 +4194,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4189,6 +4210,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4224,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.47.3
----Next_Part(Thu_May_28_12_16_22_2026_214)--
Content-Type: Text/X-Patch; charset=us-ascii
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment;
filename="0002-Use-double-quotes-in-message.patch"
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH 1/4] Make propgraph object descriptions translatable
@ 2026-05-26 07:14 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-05-26 07:14 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
Build the whole object description from a single format string
instead.
---
src/backend/catalog/objectaddress.c | 61 ++++++++++++++++++++---------
1 file changed, 43 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..c107d0fb0e4 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,15 +4092,15 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+ Assert(objdesc.len > 0);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
ReleaseSysCache(tup);
break;
@@ -4109,6 +4112,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,9 +4131,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4137,6 +4147,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4161,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4175,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,9 +4194,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4189,6 +4210,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4224,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.47.3
----Next_Part(Thu_May_28_12_16_22_2026_214)--
Content-Type: Text/X-Patch; charset=us-ascii
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment;
filename="0002-Use-double-quotes-in-message.patch"
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH 1/4] Make propgraph object descriptions translatable
@ 2026-05-26 07:14 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-05-26 07:14 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
Build the whole object description from a single format string
instead.
---
src/backend/catalog/objectaddress.c | 61 ++++++++++++++++++++---------
1 file changed, 43 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..c107d0fb0e4 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,15 +4092,15 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+ Assert(objdesc.len > 0);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
ReleaseSysCache(tup);
break;
@@ -4109,6 +4112,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,9 +4131,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4137,6 +4147,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4161,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4175,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,9 +4194,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4189,6 +4210,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4224,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.47.3
----Next_Part(Thu_May_28_12_16_22_2026_214)--
Content-Type: Text/X-Patch; charset=us-ascii
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment;
filename="0002-Use-double-quotes-in-message.patch"
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH 1/4] Make propgraph object descriptions translatable
@ 2026-05-26 07:14 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-05-26 07:14 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
Build the whole object description from a single format string
instead.
---
src/backend/catalog/objectaddress.c | 61 ++++++++++++++++++++---------
1 file changed, 43 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..c107d0fb0e4 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,15 +4092,15 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+ Assert(objdesc.len > 0);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
ReleaseSysCache(tup);
break;
@@ -4109,6 +4112,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,9 +4131,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4137,6 +4147,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4161,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4175,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,9 +4194,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4189,6 +4210,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4224,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.47.3
----Next_Part(Thu_May_28_12_16_22_2026_214)--
Content-Type: Text/X-Patch; charset=us-ascii
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment;
filename="0002-Use-double-quotes-in-message.patch"
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH 1/4] Make propgraph object descriptions translatable
@ 2026-05-26 07:14 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-05-26 07:14 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
Build the whole object description from a single format string
instead.
---
src/backend/catalog/objectaddress.c | 61 ++++++++++++++++++++---------
1 file changed, 43 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..c107d0fb0e4 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,15 +4092,15 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+ Assert(objdesc.len > 0);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
ReleaseSysCache(tup);
break;
@@ -4109,6 +4112,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,9 +4131,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4137,6 +4147,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4161,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4175,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,9 +4194,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4189,6 +4210,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4224,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.47.3
----Next_Part(Thu_May_28_12_16_22_2026_214)--
Content-Type: Text/X-Patch; charset=us-ascii
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment;
filename="0002-Use-double-quotes-in-message.patch"
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH 1/4] Make propgraph object descriptions translatable
@ 2026-05-26 07:14 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-05-26 07:14 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
Build the whole object description from a single format string
instead.
---
src/backend/catalog/objectaddress.c | 61 ++++++++++++++++++++---------
1 file changed, 43 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..c107d0fb0e4 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,15 +4092,15 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+ Assert(objdesc.len > 0);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
ReleaseSysCache(tup);
break;
@@ -4109,6 +4112,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,9 +4131,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4137,6 +4147,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4161,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4175,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,9 +4194,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4189,6 +4210,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4224,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.47.3
----Next_Part(Thu_May_28_12_16_22_2026_214)--
Content-Type: Text/X-Patch; charset=us-ascii
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment;
filename="0002-Use-double-quotes-in-message.patch"
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH 1/4] Make propgraph object descriptions translatable
@ 2026-05-26 07:14 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-05-26 07:14 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
Build the whole object description from a single format string
instead.
---
src/backend/catalog/objectaddress.c | 61 ++++++++++++++++++++---------
1 file changed, 43 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..c107d0fb0e4 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,15 +4092,15 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+ Assert(objdesc.len > 0);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
ReleaseSysCache(tup);
break;
@@ -4109,6 +4112,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,9 +4131,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4137,6 +4147,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4161,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4175,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,9 +4194,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4189,6 +4210,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4224,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.47.3
----Next_Part(Thu_May_28_12_16_22_2026_214)--
Content-Type: Text/X-Patch; charset=us-ascii
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment;
filename="0002-Use-double-quotes-in-message.patch"
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH 1/4] Make propgraph object descriptions translatable
@ 2026-05-26 07:14 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-05-26 07:14 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
Build the whole object description from a single format string
instead.
---
src/backend/catalog/objectaddress.c | 61 ++++++++++++++++++++---------
1 file changed, 43 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..c107d0fb0e4 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,15 +4092,15 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+ Assert(objdesc.len > 0);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
ReleaseSysCache(tup);
break;
@@ -4109,6 +4112,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,9 +4131,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4137,6 +4147,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4161,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4175,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,9 +4194,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4189,6 +4210,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4224,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.47.3
----Next_Part(Thu_May_28_12_16_22_2026_214)--
Content-Type: Text/X-Patch; charset=us-ascii
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment;
filename="0002-Use-double-quotes-in-message.patch"
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH 1/4] Make propgraph object descriptions translatable
@ 2026-05-26 07:14 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-05-26 07:14 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
Build the whole object description from a single format string
instead.
---
src/backend/catalog/objectaddress.c | 61 ++++++++++++++++++++---------
1 file changed, 43 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..c107d0fb0e4 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,15 +4092,15 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+ Assert(objdesc.len > 0);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
ReleaseSysCache(tup);
break;
@@ -4109,6 +4112,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,9 +4131,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4137,6 +4147,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4161,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4175,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,9 +4194,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4189,6 +4210,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4224,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.47.3
----Next_Part(Thu_May_28_12_16_22_2026_214)--
Content-Type: Text/X-Patch; charset=us-ascii
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment;
filename="0002-Use-double-quotes-in-message.patch"
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH 1/4] Make propgraph object descriptions translatable
@ 2026-05-26 07:14 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-05-26 07:14 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
Build the whole object description from a single format string
instead.
---
src/backend/catalog/objectaddress.c | 61 ++++++++++++++++++++---------
1 file changed, 43 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..c107d0fb0e4 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,15 +4092,15 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+ Assert(objdesc.len > 0);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
ReleaseSysCache(tup);
break;
@@ -4109,6 +4112,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,9 +4131,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4137,6 +4147,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4161,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4175,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,9 +4194,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4189,6 +4210,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4224,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.47.3
----Next_Part(Thu_May_28_12_16_22_2026_214)--
Content-Type: Text/X-Patch; charset=us-ascii
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment;
filename="0002-Use-double-quotes-in-message.patch"
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH 1/4] Make propgraph object descriptions translatable
@ 2026-05-26 07:14 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-05-26 07:14 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
Build the whole object description from a single format string
instead.
---
src/backend/catalog/objectaddress.c | 61 ++++++++++++++++++++---------
1 file changed, 43 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..c107d0fb0e4 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,15 +4092,15 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+ Assert(objdesc.len > 0);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
ReleaseSysCache(tup);
break;
@@ -4109,6 +4112,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,9 +4131,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4137,6 +4147,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4161,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4175,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,9 +4194,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4189,6 +4210,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4224,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.47.3
----Next_Part(Thu_May_28_12_16_22_2026_214)--
Content-Type: Text/X-Patch; charset=us-ascii
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment;
filename="0002-Use-double-quotes-in-message.patch"
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH 1/4] Make propgraph object descriptions translatable
@ 2026-05-26 07:14 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-05-26 07:14 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
Build the whole object description from a single format string
instead.
---
src/backend/catalog/objectaddress.c | 61 ++++++++++++++++++++---------
1 file changed, 43 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..c107d0fb0e4 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,15 +4092,15 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+ Assert(objdesc.len > 0);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
ReleaseSysCache(tup);
break;
@@ -4109,6 +4112,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,9 +4131,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4137,6 +4147,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4161,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4175,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,9 +4194,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4189,6 +4210,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4224,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.47.3
----Next_Part(Thu_May_28_12_16_22_2026_214)--
Content-Type: Text/X-Patch; charset=us-ascii
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment;
filename="0002-Use-double-quotes-in-message.patch"
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH 1/4] Make propgraph object descriptions translatable
@ 2026-05-26 07:14 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-05-26 07:14 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
Build the whole object description from a single format string
instead.
---
src/backend/catalog/objectaddress.c | 61 ++++++++++++++++++++---------
1 file changed, 43 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..c107d0fb0e4 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,15 +4092,15 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+ Assert(objdesc.len > 0);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
ReleaseSysCache(tup);
break;
@@ -4109,6 +4112,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,9 +4131,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4137,6 +4147,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4161,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4175,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,9 +4194,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4189,6 +4210,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4224,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.47.3
----Next_Part(Thu_May_28_12_16_22_2026_214)--
Content-Type: Text/X-Patch; charset=us-ascii
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment;
filename="0002-Use-double-quotes-in-message.patch"
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH 1/4] Make propgraph object descriptions translatable
@ 2026-05-26 07:14 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-05-26 07:14 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
Build the whole object description from a single format string
instead.
---
src/backend/catalog/objectaddress.c | 61 ++++++++++++++++++++---------
1 file changed, 43 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..c107d0fb0e4 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,15 +4092,15 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+ Assert(objdesc.len > 0);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
ReleaseSysCache(tup);
break;
@@ -4109,6 +4112,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,9 +4131,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4137,6 +4147,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4161,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4175,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,9 +4194,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4189,6 +4210,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4224,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.47.3
----Next_Part(Thu_May_28_12_16_22_2026_214)--
Content-Type: Text/X-Patch; charset=us-ascii
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment;
filename="0002-Use-double-quotes-in-message.patch"
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH 1/4] Make propgraph object descriptions translatable
@ 2026-05-26 07:14 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-05-26 07:14 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
Build the whole object description from a single format string
instead.
---
src/backend/catalog/objectaddress.c | 61 ++++++++++++++++++++---------
1 file changed, 43 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..c107d0fb0e4 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,15 +4092,15 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+ Assert(objdesc.len > 0);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
ReleaseSysCache(tup);
break;
@@ -4109,6 +4112,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,9 +4131,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4137,6 +4147,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4161,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4175,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,9 +4194,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4189,6 +4210,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4224,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.47.3
----Next_Part(Thu_May_28_12_16_22_2026_214)--
Content-Type: Text/X-Patch; charset=us-ascii
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment;
filename="0002-Use-double-quotes-in-message.patch"
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH 1/4] Make propgraph object descriptions translatable
@ 2026-05-26 07:14 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-05-26 07:14 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
Build the whole object description from a single format string
instead.
---
src/backend/catalog/objectaddress.c | 61 ++++++++++++++++++++---------
1 file changed, 43 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..c107d0fb0e4 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,15 +4092,15 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+ Assert(objdesc.len > 0);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
ReleaseSysCache(tup);
break;
@@ -4109,6 +4112,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,9 +4131,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4137,6 +4147,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4161,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4175,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,9 +4194,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4189,6 +4210,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4224,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.47.3
----Next_Part(Thu_May_28_12_16_22_2026_214)--
Content-Type: Text/X-Patch; charset=us-ascii
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment;
filename="0002-Use-double-quotes-in-message.patch"
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH 1/4] Make propgraph object descriptions translatable
@ 2026-05-26 07:14 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-05-26 07:14 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
Build the whole object description from a single format string
instead.
---
src/backend/catalog/objectaddress.c | 61 ++++++++++++++++++++---------
1 file changed, 43 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..c107d0fb0e4 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,15 +4092,15 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+ Assert(objdesc.len > 0);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
ReleaseSysCache(tup);
break;
@@ -4109,6 +4112,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,9 +4131,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4137,6 +4147,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4161,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4175,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,9 +4194,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4189,6 +4210,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4224,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.47.3
----Next_Part(Thu_May_28_12_16_22_2026_214)--
Content-Type: Text/X-Patch; charset=us-ascii
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment;
filename="0002-Use-double-quotes-in-message.patch"
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH 1/4] Make propgraph object descriptions translatable
@ 2026-05-26 07:14 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-05-26 07:14 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
Build the whole object description from a single format string
instead.
---
src/backend/catalog/objectaddress.c | 61 ++++++++++++++++++++---------
1 file changed, 43 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..c107d0fb0e4 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,15 +4092,15 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+ Assert(objdesc.len > 0);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
ReleaseSysCache(tup);
break;
@@ -4109,6 +4112,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,9 +4131,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4137,6 +4147,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4161,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4175,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,9 +4194,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4189,6 +4210,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4224,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.47.3
----Next_Part(Thu_May_28_12_16_22_2026_214)--
Content-Type: Text/X-Patch; charset=us-ascii
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment;
filename="0002-Use-double-quotes-in-message.patch"
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH 1/4] Make propgraph object descriptions translatable
@ 2026-05-26 07:14 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-05-26 07:14 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
Build the whole object description from a single format string
instead.
---
src/backend/catalog/objectaddress.c | 61 ++++++++++++++++++++---------
1 file changed, 43 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..c107d0fb0e4 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,15 +4092,15 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+ Assert(objdesc.len > 0);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
ReleaseSysCache(tup);
break;
@@ -4109,6 +4112,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,9 +4131,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4137,6 +4147,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4161,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4175,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,9 +4194,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4189,6 +4210,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4224,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.47.3
----Next_Part(Thu_May_28_12_16_22_2026_214)--
Content-Type: Text/X-Patch; charset=us-ascii
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment;
filename="0002-Use-double-quotes-in-message.patch"
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH 1/4] Make propgraph object descriptions translatable
@ 2026-05-26 07:14 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-05-26 07:14 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
Build the whole object description from a single format string
instead.
---
src/backend/catalog/objectaddress.c | 61 ++++++++++++++++++++---------
1 file changed, 43 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..c107d0fb0e4 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,15 +4092,15 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+ Assert(objdesc.len > 0);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
ReleaseSysCache(tup);
break;
@@ -4109,6 +4112,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,9 +4131,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4137,6 +4147,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4161,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4175,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,9 +4194,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4189,6 +4210,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4224,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.47.3
----Next_Part(Thu_May_28_12_16_22_2026_214)--
Content-Type: Text/X-Patch; charset=us-ascii
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment;
filename="0002-Use-double-quotes-in-message.patch"
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH 1/4] Make propgraph object descriptions translatable
@ 2026-05-26 07:14 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-05-26 07:14 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
Build the whole object description from a single format string
instead.
---
src/backend/catalog/objectaddress.c | 61 ++++++++++++++++++++---------
1 file changed, 43 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..c107d0fb0e4 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,15 +4092,15 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+ Assert(objdesc.len > 0);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
ReleaseSysCache(tup);
break;
@@ -4109,6 +4112,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,9 +4131,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4137,6 +4147,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4161,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4175,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,9 +4194,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4189,6 +4210,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4224,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.47.3
----Next_Part(Thu_May_28_12_16_22_2026_214)--
Content-Type: Text/X-Patch; charset=us-ascii
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment;
filename="0002-Use-double-quotes-in-message.patch"
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH 1/4] Make propgraph object descriptions translatable
@ 2026-05-26 07:14 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-05-26 07:14 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
Build the whole object description from a single format string
instead.
---
src/backend/catalog/objectaddress.c | 61 ++++++++++++++++++++---------
1 file changed, 43 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..c107d0fb0e4 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,15 +4092,15 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+ Assert(objdesc.len > 0);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
ReleaseSysCache(tup);
break;
@@ -4109,6 +4112,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,9 +4131,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4137,6 +4147,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4161,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4175,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,9 +4194,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4189,6 +4210,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4224,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.47.3
----Next_Part(Thu_May_28_12_16_22_2026_214)--
Content-Type: Text/X-Patch; charset=us-ascii
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment;
filename="0002-Use-double-quotes-in-message.patch"
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH 1/4] Make propgraph object descriptions translatable
@ 2026-05-26 07:14 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-05-26 07:14 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
Build the whole object description from a single format string
instead.
---
src/backend/catalog/objectaddress.c | 61 ++++++++++++++++++++---------
1 file changed, 43 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..c107d0fb0e4 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,15 +4092,15 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+ Assert(objdesc.len > 0);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
ReleaseSysCache(tup);
break;
@@ -4109,6 +4112,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,9 +4131,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4137,6 +4147,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4161,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4175,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,9 +4194,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4189,6 +4210,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4224,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.47.3
----Next_Part(Thu_May_28_12_16_22_2026_214)--
Content-Type: Text/X-Patch; charset=us-ascii
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment;
filename="0002-Use-double-quotes-in-message.patch"
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH 1/4] Make propgraph object descriptions translatable
@ 2026-05-26 07:14 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-05-26 07:14 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
Build the whole object description from a single format string
instead.
---
src/backend/catalog/objectaddress.c | 61 ++++++++++++++++++++---------
1 file changed, 43 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..c107d0fb0e4 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,15 +4092,15 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+ Assert(objdesc.len > 0);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
ReleaseSysCache(tup);
break;
@@ -4109,6 +4112,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,9 +4131,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4137,6 +4147,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4161,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4175,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,9 +4194,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4189,6 +4210,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4224,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.47.3
----Next_Part(Thu_May_28_12_16_22_2026_214)--
Content-Type: Text/X-Patch; charset=us-ascii
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment;
filename="0002-Use-double-quotes-in-message.patch"
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH 1/4] Make propgraph object descriptions translatable
@ 2026-05-26 07:14 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-05-26 07:14 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
Build the whole object description from a single format string
instead.
---
src/backend/catalog/objectaddress.c | 61 ++++++++++++++++++++---------
1 file changed, 43 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..c107d0fb0e4 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,15 +4092,15 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+ Assert(objdesc.len > 0);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
ReleaseSysCache(tup);
break;
@@ -4109,6 +4112,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,9 +4131,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4137,6 +4147,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4161,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4175,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,9 +4194,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4189,6 +4210,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4224,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.47.3
----Next_Part(Thu_May_28_12_16_22_2026_214)--
Content-Type: Text/X-Patch; charset=us-ascii
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment;
filename="0002-Use-double-quotes-in-message.patch"
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH 1/4] Make propgraph object descriptions translatable
@ 2026-05-26 07:14 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-05-26 07:14 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
Build the whole object description from a single format string
instead.
---
src/backend/catalog/objectaddress.c | 61 ++++++++++++++++++++---------
1 file changed, 43 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..c107d0fb0e4 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,15 +4092,15 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+ Assert(objdesc.len > 0);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
ReleaseSysCache(tup);
break;
@@ -4109,6 +4112,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,9 +4131,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4137,6 +4147,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4161,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4175,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,9 +4194,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4189,6 +4210,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4224,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.47.3
----Next_Part(Thu_May_28_12_16_22_2026_214)--
Content-Type: Text/X-Patch; charset=us-ascii
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment;
filename="0002-Use-double-quotes-in-message.patch"
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH 1/4] Make propgraph object descriptions translatable
@ 2026-05-26 07:14 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-05-26 07:14 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
Build the whole object description from a single format string
instead.
---
src/backend/catalog/objectaddress.c | 61 ++++++++++++++++++++---------
1 file changed, 43 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..c107d0fb0e4 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,15 +4092,15 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+ Assert(objdesc.len > 0);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
ReleaseSysCache(tup);
break;
@@ -4109,6 +4112,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,9 +4131,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4137,6 +4147,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4161,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4175,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,9 +4194,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4189,6 +4210,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4224,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.47.3
----Next_Part(Thu_May_28_12_16_22_2026_214)--
Content-Type: Text/X-Patch; charset=us-ascii
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment;
filename="0002-Use-double-quotes-in-message.patch"
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH 1/4] Make propgraph object descriptions translatable
@ 2026-05-26 07:14 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-05-26 07:14 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
Build the whole object description from a single format string
instead.
---
src/backend/catalog/objectaddress.c | 61 ++++++++++++++++++++---------
1 file changed, 43 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..c107d0fb0e4 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,15 +4092,15 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+ Assert(objdesc.len > 0);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
ReleaseSysCache(tup);
break;
@@ -4109,6 +4112,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,9 +4131,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4137,6 +4147,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4161,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4175,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,9 +4194,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4189,6 +4210,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4224,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.47.3
----Next_Part(Thu_May_28_12_16_22_2026_214)--
Content-Type: Text/X-Patch; charset=us-ascii
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment;
filename="0002-Use-double-quotes-in-message.patch"
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH 1/4] Make propgraph object descriptions translatable
@ 2026-05-26 07:14 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-05-26 07:14 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
Build the whole object description from a single format string
instead.
---
src/backend/catalog/objectaddress.c | 61 ++++++++++++++++++++---------
1 file changed, 43 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..c107d0fb0e4 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,15 +4092,15 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+ Assert(objdesc.len > 0);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
ReleaseSysCache(tup);
break;
@@ -4109,6 +4112,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,9 +4131,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4137,6 +4147,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4161,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4175,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,9 +4194,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4189,6 +4210,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4224,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.47.3
----Next_Part(Thu_May_28_12_16_22_2026_214)--
Content-Type: Text/X-Patch; charset=us-ascii
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment;
filename="0002-Use-double-quotes-in-message.patch"
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH 1/4] Make propgraph object descriptions translatable
@ 2026-05-26 07:14 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-05-26 07:14 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
Build the whole object description from a single format string
instead.
---
src/backend/catalog/objectaddress.c | 61 ++++++++++++++++++++---------
1 file changed, 43 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..c107d0fb0e4 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,15 +4092,15 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+ Assert(objdesc.len > 0);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
ReleaseSysCache(tup);
break;
@@ -4109,6 +4112,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,9 +4131,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4137,6 +4147,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4161,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4175,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,9 +4194,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4189,6 +4210,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4224,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.47.3
----Next_Part(Thu_May_28_12_16_22_2026_214)--
Content-Type: Text/X-Patch; charset=us-ascii
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment;
filename="0002-Use-double-quotes-in-message.patch"
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH 1/4] Make propgraph object descriptions translatable
@ 2026-05-26 07:14 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-05-26 07:14 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
Build the whole object description from a single format string
instead.
---
src/backend/catalog/objectaddress.c | 61 ++++++++++++++++++++---------
1 file changed, 43 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..c107d0fb0e4 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,15 +4092,15 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+ Assert(objdesc.len > 0);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
ReleaseSysCache(tup);
break;
@@ -4109,6 +4112,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,9 +4131,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4137,6 +4147,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4161,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4175,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,9 +4194,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4189,6 +4210,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4224,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.47.3
----Next_Part(Thu_May_28_12_16_22_2026_214)--
Content-Type: Text/X-Patch; charset=us-ascii
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment;
filename="0002-Use-double-quotes-in-message.patch"
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH 1/4] Make propgraph object descriptions translatable
@ 2026-05-26 07:14 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-05-26 07:14 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
Build the whole object description from a single format string
instead.
---
src/backend/catalog/objectaddress.c | 61 ++++++++++++++++++++---------
1 file changed, 43 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..c107d0fb0e4 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,15 +4092,15 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+ Assert(objdesc.len > 0);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
ReleaseSysCache(tup);
break;
@@ -4109,6 +4112,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,9 +4131,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4137,6 +4147,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4161,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4175,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,9 +4194,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4189,6 +4210,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4224,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.47.3
----Next_Part(Thu_May_28_12_16_22_2026_214)--
Content-Type: Text/X-Patch; charset=us-ascii
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment;
filename="0002-Use-double-quotes-in-message.patch"
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH 1/4] Make propgraph object descriptions translatable
@ 2026-05-26 07:14 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-05-26 07:14 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
Build the whole object description from a single format string
instead.
---
src/backend/catalog/objectaddress.c | 61 ++++++++++++++++++++---------
1 file changed, 43 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..c107d0fb0e4 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,15 +4092,15 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+ Assert(objdesc.len > 0);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
ReleaseSysCache(tup);
break;
@@ -4109,6 +4112,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,9 +4131,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4137,6 +4147,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4161,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4175,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,9 +4194,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4189,6 +4210,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4224,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.47.3
----Next_Part(Thu_May_28_12_16_22_2026_214)--
Content-Type: Text/X-Patch; charset=us-ascii
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment;
filename="0002-Use-double-quotes-in-message.patch"
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH 1/4] Make propgraph object descriptions translatable
@ 2026-05-26 07:14 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-05-26 07:14 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
Build the whole object description from a single format string
instead.
---
src/backend/catalog/objectaddress.c | 61 ++++++++++++++++++++---------
1 file changed, 43 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..c107d0fb0e4 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,15 +4092,15 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+ Assert(objdesc.len > 0);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
ReleaseSysCache(tup);
break;
@@ -4109,6 +4112,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,9 +4131,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4137,6 +4147,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4161,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4175,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,9 +4194,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4189,6 +4210,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4224,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.47.3
----Next_Part(Thu_May_28_12_16_22_2026_214)--
Content-Type: Text/X-Patch; charset=us-ascii
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment;
filename="0002-Use-double-quotes-in-message.patch"
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH 1/4] Make propgraph object descriptions translatable
@ 2026-05-26 07:14 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-05-26 07:14 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
Build the whole object description from a single format string
instead.
---
src/backend/catalog/objectaddress.c | 61 ++++++++++++++++++++---------
1 file changed, 43 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..c107d0fb0e4 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,15 +4092,15 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+ Assert(objdesc.len > 0);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
ReleaseSysCache(tup);
break;
@@ -4109,6 +4112,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,9 +4131,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4137,6 +4147,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4161,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4175,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,9 +4194,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4189,6 +4210,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4224,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.47.3
----Next_Part(Thu_May_28_12_16_22_2026_214)--
Content-Type: Text/X-Patch; charset=us-ascii
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment;
filename="0002-Use-double-quotes-in-message.patch"
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH 1/4] Make propgraph object descriptions translatable
@ 2026-05-26 07:14 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-05-26 07:14 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
Build the whole object description from a single format string
instead.
---
src/backend/catalog/objectaddress.c | 61 ++++++++++++++++++++---------
1 file changed, 43 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..c107d0fb0e4 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,15 +4092,15 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+ Assert(objdesc.len > 0);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
ReleaseSysCache(tup);
break;
@@ -4109,6 +4112,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,9 +4131,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4137,6 +4147,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4161,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4175,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,9 +4194,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4189,6 +4210,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4224,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.47.3
----Next_Part(Thu_May_28_12_16_22_2026_214)--
Content-Type: Text/X-Patch; charset=us-ascii
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment;
filename="0002-Use-double-quotes-in-message.patch"
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH 1/4] Make propgraph object descriptions translatable
@ 2026-05-26 07:14 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-05-26 07:14 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
Build the whole object description from a single format string
instead.
---
src/backend/catalog/objectaddress.c | 61 ++++++++++++++++++++---------
1 file changed, 43 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..c107d0fb0e4 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,15 +4092,15 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+ Assert(objdesc.len > 0);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
ReleaseSysCache(tup);
break;
@@ -4109,6 +4112,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,9 +4131,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4137,6 +4147,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4161,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4175,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,9 +4194,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4189,6 +4210,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4224,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.47.3
----Next_Part(Thu_May_28_12_16_22_2026_214)--
Content-Type: Text/X-Patch; charset=us-ascii
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment;
filename="0002-Use-double-quotes-in-message.patch"
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH 1/4] Make propgraph object descriptions translatable
@ 2026-05-26 07:14 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-05-26 07:14 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
Build the whole object description from a single format string
instead.
---
src/backend/catalog/objectaddress.c | 61 ++++++++++++++++++++---------
1 file changed, 43 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..c107d0fb0e4 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,15 +4092,15 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+ Assert(objdesc.len > 0);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
ReleaseSysCache(tup);
break;
@@ -4109,6 +4112,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,9 +4131,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4137,6 +4147,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4161,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4175,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,9 +4194,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4189,6 +4210,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4224,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.47.3
----Next_Part(Thu_May_28_12_16_22_2026_214)--
Content-Type: Text/X-Patch; charset=us-ascii
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment;
filename="0002-Use-double-quotes-in-message.patch"
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH 1/4] Make propgraph object descriptions translatable
@ 2026-05-26 07:14 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-05-26 07:14 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
Build the whole object description from a single format string
instead.
---
src/backend/catalog/objectaddress.c | 61 ++++++++++++++++++++---------
1 file changed, 43 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..c107d0fb0e4 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,15 +4092,15 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+ Assert(objdesc.len > 0);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
ReleaseSysCache(tup);
break;
@@ -4109,6 +4112,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,9 +4131,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4137,6 +4147,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4161,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4175,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,9 +4194,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4189,6 +4210,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4224,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.47.3
----Next_Part(Thu_May_28_12_16_22_2026_214)--
Content-Type: Text/X-Patch; charset=us-ascii
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment;
filename="0002-Use-double-quotes-in-message.patch"
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH 1/4] Make propgraph object descriptions translatable
@ 2026-05-26 07:14 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-05-26 07:14 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
Build the whole object description from a single format string
instead.
---
src/backend/catalog/objectaddress.c | 61 ++++++++++++++++++++---------
1 file changed, 43 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..c107d0fb0e4 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,15 +4092,15 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+ Assert(objdesc.len > 0);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
ReleaseSysCache(tup);
break;
@@ -4109,6 +4112,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,9 +4131,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4137,6 +4147,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4161,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4175,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,9 +4194,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4189,6 +4210,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4224,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.47.3
----Next_Part(Thu_May_28_12_16_22_2026_214)--
Content-Type: Text/X-Patch; charset=us-ascii
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment;
filename="0002-Use-double-quotes-in-message.patch"
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH 1/4] Make propgraph object descriptions translatable
@ 2026-05-26 07:14 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-05-26 07:14 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
Build the whole object description from a single format string
instead.
---
src/backend/catalog/objectaddress.c | 61 ++++++++++++++++++++---------
1 file changed, 43 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..c107d0fb0e4 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,15 +4092,15 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+ Assert(objdesc.len > 0);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
ReleaseSysCache(tup);
break;
@@ -4109,6 +4112,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,9 +4131,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4137,6 +4147,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4161,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4175,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,9 +4194,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4189,6 +4210,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4224,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.47.3
----Next_Part(Thu_May_28_12_16_22_2026_214)--
Content-Type: Text/X-Patch; charset=us-ascii
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment;
filename="0002-Use-double-quotes-in-message.patch"
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH 1/4] Make propgraph object descriptions translatable
@ 2026-05-26 07:14 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-05-26 07:14 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
Build the whole object description from a single format string
instead.
---
src/backend/catalog/objectaddress.c | 61 ++++++++++++++++++++---------
1 file changed, 43 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..c107d0fb0e4 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,15 +4092,15 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+ Assert(objdesc.len > 0);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
ReleaseSysCache(tup);
break;
@@ -4109,6 +4112,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,9 +4131,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4137,6 +4147,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4161,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4175,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,9 +4194,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4189,6 +4210,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4224,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.47.3
----Next_Part(Thu_May_28_12_16_22_2026_214)--
Content-Type: Text/X-Patch; charset=us-ascii
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment;
filename="0002-Use-double-quotes-in-message.patch"
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH 1/4] Make propgraph object descriptions translatable
@ 2026-05-26 07:14 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-05-26 07:14 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
Build the whole object description from a single format string
instead.
---
src/backend/catalog/objectaddress.c | 61 ++++++++++++++++++++---------
1 file changed, 43 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..c107d0fb0e4 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,15 +4092,15 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+ Assert(objdesc.len > 0);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
ReleaseSysCache(tup);
break;
@@ -4109,6 +4112,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,9 +4131,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4137,6 +4147,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4161,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4175,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,9 +4194,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4189,6 +4210,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4224,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.47.3
----Next_Part(Thu_May_28_12_16_22_2026_214)--
Content-Type: Text/X-Patch; charset=us-ascii
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment;
filename="0002-Use-double-quotes-in-message.patch"
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH 1/4] Make propgraph object descriptions translatable
@ 2026-05-26 07:14 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-05-26 07:14 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
Build the whole object description from a single format string
instead.
---
src/backend/catalog/objectaddress.c | 61 ++++++++++++++++++++---------
1 file changed, 43 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..c107d0fb0e4 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,15 +4092,15 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+ Assert(objdesc.len > 0);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
ReleaseSysCache(tup);
break;
@@ -4109,6 +4112,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,9 +4131,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4137,6 +4147,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4161,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4175,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,9 +4194,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4189,6 +4210,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4224,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.47.3
----Next_Part(Thu_May_28_12_16_22_2026_214)--
Content-Type: Text/X-Patch; charset=us-ascii
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment;
filename="0002-Use-double-quotes-in-message.patch"
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH 1/4] Make propgraph object descriptions translatable
@ 2026-05-26 07:14 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-05-26 07:14 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
Build the whole object description from a single format string
instead.
---
src/backend/catalog/objectaddress.c | 61 ++++++++++++++++++++---------
1 file changed, 43 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..c107d0fb0e4 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,15 +4092,15 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+ Assert(objdesc.len > 0);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
ReleaseSysCache(tup);
break;
@@ -4109,6 +4112,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,9 +4131,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4137,6 +4147,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4161,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4175,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,9 +4194,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4189,6 +4210,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4224,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.47.3
----Next_Part(Thu_May_28_12_16_22_2026_214)--
Content-Type: Text/X-Patch; charset=us-ascii
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment;
filename="0002-Use-double-quotes-in-message.patch"
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH 1/4] Make propgraph object descriptions translatable
@ 2026-05-26 07:14 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-05-26 07:14 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
Build the whole object description from a single format string
instead.
---
src/backend/catalog/objectaddress.c | 61 ++++++++++++++++++++---------
1 file changed, 43 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..c107d0fb0e4 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,15 +4092,15 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+ Assert(objdesc.len > 0);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
ReleaseSysCache(tup);
break;
@@ -4109,6 +4112,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,9 +4131,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4137,6 +4147,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4161,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4175,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,9 +4194,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4189,6 +4210,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4224,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.47.3
----Next_Part(Thu_May_28_12_16_22_2026_214)--
Content-Type: Text/X-Patch; charset=us-ascii
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment;
filename="0002-Use-double-quotes-in-message.patch"
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH 1/4] Make propgraph object descriptions translatable
@ 2026-05-26 07:14 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-05-26 07:14 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
Build the whole object description from a single format string
instead.
---
src/backend/catalog/objectaddress.c | 61 ++++++++++++++++++++---------
1 file changed, 43 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..c107d0fb0e4 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,15 +4092,15 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+ Assert(objdesc.len > 0);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
ReleaseSysCache(tup);
break;
@@ -4109,6 +4112,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,9 +4131,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4137,6 +4147,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4161,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4175,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,9 +4194,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4189,6 +4210,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4224,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.47.3
----Next_Part(Thu_May_28_12_16_22_2026_214)--
Content-Type: Text/X-Patch; charset=us-ascii
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment;
filename="0002-Use-double-quotes-in-message.patch"
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH 1/4] Make propgraph object descriptions translatable
@ 2026-05-26 07:14 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-05-26 07:14 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
Build the whole object description from a single format string
instead.
---
src/backend/catalog/objectaddress.c | 61 ++++++++++++++++++++---------
1 file changed, 43 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..c107d0fb0e4 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,15 +4092,15 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+ Assert(objdesc.len > 0);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
ReleaseSysCache(tup);
break;
@@ -4109,6 +4112,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,9 +4131,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4137,6 +4147,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4161,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4175,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,9 +4194,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4189,6 +4210,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4224,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.47.3
----Next_Part(Thu_May_28_12_16_22_2026_214)--
Content-Type: Text/X-Patch; charset=us-ascii
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment;
filename="0002-Use-double-quotes-in-message.patch"
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH 1/4] Make propgraph object descriptions translatable
@ 2026-05-26 07:14 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-05-26 07:14 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
Build the whole object description from a single format string
instead.
---
src/backend/catalog/objectaddress.c | 61 ++++++++++++++++++++---------
1 file changed, 43 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..c107d0fb0e4 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,15 +4092,15 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+ Assert(objdesc.len > 0);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
ReleaseSysCache(tup);
break;
@@ -4109,6 +4112,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,9 +4131,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4137,6 +4147,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4161,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4175,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,9 +4194,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4189,6 +4210,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4224,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.47.3
----Next_Part(Thu_May_28_12_16_22_2026_214)--
Content-Type: Text/X-Patch; charset=us-ascii
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment;
filename="0002-Use-double-quotes-in-message.patch"
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH 1/4] Make propgraph object descriptions translatable
@ 2026-05-26 07:14 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-05-26 07:14 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
Build the whole object description from a single format string
instead.
---
src/backend/catalog/objectaddress.c | 61 ++++++++++++++++++++---------
1 file changed, 43 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..c107d0fb0e4 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,15 +4092,15 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+ Assert(objdesc.len > 0);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
ReleaseSysCache(tup);
break;
@@ -4109,6 +4112,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,9 +4131,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4137,6 +4147,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4161,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4175,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,9 +4194,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4189,6 +4210,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4224,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.47.3
----Next_Part(Thu_May_28_12_16_22_2026_214)--
Content-Type: Text/X-Patch; charset=us-ascii
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment;
filename="0002-Use-double-quotes-in-message.patch"
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH 1/4] Make propgraph object descriptions translatable
@ 2026-05-26 07:14 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-05-26 07:14 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
Build the whole object description from a single format string
instead.
---
src/backend/catalog/objectaddress.c | 61 ++++++++++++++++++++---------
1 file changed, 43 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..c107d0fb0e4 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,15 +4092,15 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+ Assert(objdesc.len > 0);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
ReleaseSysCache(tup);
break;
@@ -4109,6 +4112,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,9 +4131,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4137,6 +4147,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4161,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4175,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,9 +4194,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4189,6 +4210,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4224,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.47.3
----Next_Part(Thu_May_28_12_16_22_2026_214)--
Content-Type: Text/X-Patch; charset=us-ascii
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment;
filename="0002-Use-double-quotes-in-message.patch"
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH 1/4] Make propgraph object descriptions translatable
@ 2026-05-26 07:14 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-05-26 07:14 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
Build the whole object description from a single format string
instead.
---
src/backend/catalog/objectaddress.c | 61 ++++++++++++++++++++---------
1 file changed, 43 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..c107d0fb0e4 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,15 +4092,15 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+ Assert(objdesc.len > 0);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
ReleaseSysCache(tup);
break;
@@ -4109,6 +4112,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,9 +4131,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4137,6 +4147,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4161,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4175,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,9 +4194,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4189,6 +4210,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4224,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.47.3
----Next_Part(Thu_May_28_12_16_22_2026_214)--
Content-Type: Text/X-Patch; charset=us-ascii
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment;
filename="0002-Use-double-quotes-in-message.patch"
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH 1/4] Make propgraph object descriptions translatable
@ 2026-05-26 07:14 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-05-26 07:14 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
Build the whole object description from a single format string
instead.
---
src/backend/catalog/objectaddress.c | 61 ++++++++++++++++++++---------
1 file changed, 43 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..c107d0fb0e4 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,15 +4092,15 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+ Assert(objdesc.len > 0);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
ReleaseSysCache(tup);
break;
@@ -4109,6 +4112,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,9 +4131,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4137,6 +4147,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4161,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4175,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,9 +4194,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4189,6 +4210,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4224,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.47.3
----Next_Part(Thu_May_28_12_16_22_2026_214)--
Content-Type: Text/X-Patch; charset=us-ascii
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment;
filename="0002-Use-double-quotes-in-message.patch"
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH 1/4] Make propgraph object descriptions translatable
@ 2026-05-26 07:14 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-05-26 07:14 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
Build the whole object description from a single format string
instead.
---
src/backend/catalog/objectaddress.c | 61 ++++++++++++++++++++---------
1 file changed, 43 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..c107d0fb0e4 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,15 +4092,15 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+ Assert(objdesc.len > 0);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
ReleaseSysCache(tup);
break;
@@ -4109,6 +4112,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,9 +4131,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4137,6 +4147,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4161,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4175,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,9 +4194,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4189,6 +4210,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4224,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.47.3
----Next_Part(Thu_May_28_12_16_22_2026_214)--
Content-Type: Text/X-Patch; charset=us-ascii
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment;
filename="0002-Use-double-quotes-in-message.patch"
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH 1/4] Make propgraph object descriptions translatable
@ 2026-05-26 07:14 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-05-26 07:14 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
Build the whole object description from a single format string
instead.
---
src/backend/catalog/objectaddress.c | 61 ++++++++++++++++++++---------
1 file changed, 43 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..c107d0fb0e4 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,15 +4092,15 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+ Assert(objdesc.len > 0);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
ReleaseSysCache(tup);
break;
@@ -4109,6 +4112,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,9 +4131,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4137,6 +4147,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4161,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4175,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,9 +4194,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4189,6 +4210,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4224,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.47.3
----Next_Part(Thu_May_28_12_16_22_2026_214)--
Content-Type: Text/X-Patch; charset=us-ascii
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment;
filename="0002-Use-double-quotes-in-message.patch"
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH 1/4] Make propgraph object descriptions translatable
@ 2026-05-26 07:14 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-05-26 07:14 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
Build the whole object description from a single format string
instead.
---
src/backend/catalog/objectaddress.c | 61 ++++++++++++++++++++---------
1 file changed, 43 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..c107d0fb0e4 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,15 +4092,15 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+ Assert(objdesc.len > 0);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
ReleaseSysCache(tup);
break;
@@ -4109,6 +4112,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,9 +4131,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4137,6 +4147,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4161,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4175,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,9 +4194,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4189,6 +4210,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4224,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.47.3
----Next_Part(Thu_May_28_12_16_22_2026_214)--
Content-Type: Text/X-Patch; charset=us-ascii
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment;
filename="0002-Use-double-quotes-in-message.patch"
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH 1/4] Make propgraph object descriptions translatable
@ 2026-05-26 07:14 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-05-26 07:14 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
Build the whole object description from a single format string
instead.
---
src/backend/catalog/objectaddress.c | 61 ++++++++++++++++++++---------
1 file changed, 43 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..c107d0fb0e4 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,15 +4092,15 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+ Assert(objdesc.len > 0);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
ReleaseSysCache(tup);
break;
@@ -4109,6 +4112,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,9 +4131,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4137,6 +4147,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4161,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4175,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,9 +4194,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4189,6 +4210,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4224,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.47.3
----Next_Part(Thu_May_28_12_16_22_2026_214)--
Content-Type: Text/X-Patch; charset=us-ascii
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment;
filename="0002-Use-double-quotes-in-message.patch"
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH 1/4] Make propgraph object descriptions translatable
@ 2026-05-26 07:14 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-05-26 07:14 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
Build the whole object description from a single format string
instead.
---
src/backend/catalog/objectaddress.c | 61 ++++++++++++++++++++---------
1 file changed, 43 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..c107d0fb0e4 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,15 +4092,15 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+ Assert(objdesc.len > 0);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
ReleaseSysCache(tup);
break;
@@ -4109,6 +4112,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,9 +4131,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4137,6 +4147,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4161,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4175,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,9 +4194,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4189,6 +4210,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4224,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.47.3
----Next_Part(Thu_May_28_12_16_22_2026_214)--
Content-Type: Text/X-Patch; charset=us-ascii
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment;
filename="0002-Use-double-quotes-in-message.patch"
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH 1/4] Make propgraph object descriptions translatable
@ 2026-05-26 07:14 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-05-26 07:14 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
Build the whole object description from a single format string
instead.
---
src/backend/catalog/objectaddress.c | 61 ++++++++++++++++++++---------
1 file changed, 43 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..c107d0fb0e4 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,15 +4092,15 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+ Assert(objdesc.len > 0);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
ReleaseSysCache(tup);
break;
@@ -4109,6 +4112,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,9 +4131,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4137,6 +4147,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4161,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4175,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,9 +4194,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4189,6 +4210,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4224,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.47.3
----Next_Part(Thu_May_28_12_16_22_2026_214)--
Content-Type: Text/X-Patch; charset=us-ascii
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment;
filename="0002-Use-double-quotes-in-message.patch"
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH 1/4] Make propgraph object descriptions translatable
@ 2026-05-26 07:14 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-05-26 07:14 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
Build the whole object description from a single format string
instead.
---
src/backend/catalog/objectaddress.c | 61 ++++++++++++++++++++---------
1 file changed, 43 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..c107d0fb0e4 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,15 +4092,15 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+ Assert(objdesc.len > 0);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
ReleaseSysCache(tup);
break;
@@ -4109,6 +4112,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,9 +4131,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4137,6 +4147,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4161,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4175,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,9 +4194,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4189,6 +4210,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4224,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.47.3
----Next_Part(Thu_May_28_12_16_22_2026_214)--
Content-Type: Text/X-Patch; charset=us-ascii
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment;
filename="0002-Use-double-quotes-in-message.patch"
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH 1/4] Make propgraph object descriptions translatable
@ 2026-05-26 07:14 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-05-26 07:14 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
Build the whole object description from a single format string
instead.
---
src/backend/catalog/objectaddress.c | 61 ++++++++++++++++++++---------
1 file changed, 43 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..c107d0fb0e4 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,15 +4092,15 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+ Assert(objdesc.len > 0);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
ReleaseSysCache(tup);
break;
@@ -4109,6 +4112,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,9 +4131,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4137,6 +4147,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4161,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4175,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,9 +4194,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4189,6 +4210,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4224,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.47.3
----Next_Part(Thu_May_28_12_16_22_2026_214)--
Content-Type: Text/X-Patch; charset=us-ascii
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment;
filename="0002-Use-double-quotes-in-message.patch"
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH 1/4] Make propgraph object descriptions translatable
@ 2026-05-26 07:14 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-05-26 07:14 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
Build the whole object description from a single format string
instead.
---
src/backend/catalog/objectaddress.c | 61 ++++++++++++++++++++---------
1 file changed, 43 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..c107d0fb0e4 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,15 +4092,15 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+ Assert(objdesc.len > 0);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
ReleaseSysCache(tup);
break;
@@ -4109,6 +4112,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,9 +4131,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4137,6 +4147,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4161,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4175,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,9 +4194,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4189,6 +4210,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4224,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.47.3
----Next_Part(Thu_May_28_12_16_22_2026_214)--
Content-Type: Text/X-Patch; charset=us-ascii
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment;
filename="0002-Use-double-quotes-in-message.patch"
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH 1/4] Make propgraph object descriptions translatable
@ 2026-05-26 07:14 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-05-26 07:14 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
Build the whole object description from a single format string
instead.
---
src/backend/catalog/objectaddress.c | 61 ++++++++++++++++++++---------
1 file changed, 43 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..c107d0fb0e4 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,15 +4092,15 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+ Assert(objdesc.len > 0);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
ReleaseSysCache(tup);
break;
@@ -4109,6 +4112,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,9 +4131,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4137,6 +4147,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4161,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4175,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,9 +4194,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4189,6 +4210,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4224,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.47.3
----Next_Part(Thu_May_28_12_16_22_2026_214)--
Content-Type: Text/X-Patch; charset=us-ascii
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment;
filename="0002-Use-double-quotes-in-message.patch"
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH 1/4] Make propgraph object descriptions translatable
@ 2026-05-26 07:14 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-05-26 07:14 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
Build the whole object description from a single format string
instead.
---
src/backend/catalog/objectaddress.c | 61 ++++++++++++++++++++---------
1 file changed, 43 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..c107d0fb0e4 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,15 +4092,15 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+ Assert(objdesc.len > 0);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
ReleaseSysCache(tup);
break;
@@ -4109,6 +4112,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,9 +4131,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4137,6 +4147,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4161,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4175,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,9 +4194,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4189,6 +4210,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4224,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.47.3
----Next_Part(Thu_May_28_12_16_22_2026_214)--
Content-Type: Text/X-Patch; charset=us-ascii
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment;
filename="0002-Use-double-quotes-in-message.patch"
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH 1/4] Make propgraph object descriptions translatable
@ 2026-05-26 07:14 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-05-26 07:14 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
Build the whole object description from a single format string
instead.
---
src/backend/catalog/objectaddress.c | 61 ++++++++++++++++++++---------
1 file changed, 43 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..c107d0fb0e4 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,15 +4092,15 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+ Assert(objdesc.len > 0);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
ReleaseSysCache(tup);
break;
@@ -4109,6 +4112,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,9 +4131,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4137,6 +4147,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4161,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4175,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,9 +4194,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4189,6 +4210,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4224,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.47.3
----Next_Part(Thu_May_28_12_16_22_2026_214)--
Content-Type: Text/X-Patch; charset=us-ascii
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment;
filename="0002-Use-double-quotes-in-message.patch"
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH 1/4] Make propgraph object descriptions translatable
@ 2026-05-26 07:14 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-05-26 07:14 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
Build the whole object description from a single format string
instead.
---
src/backend/catalog/objectaddress.c | 61 ++++++++++++++++++++---------
1 file changed, 43 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..c107d0fb0e4 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,15 +4092,15 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+ Assert(objdesc.len > 0);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
ReleaseSysCache(tup);
break;
@@ -4109,6 +4112,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,9 +4131,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4137,6 +4147,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4161,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4175,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,9 +4194,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4189,6 +4210,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4224,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.47.3
----Next_Part(Thu_May_28_12_16_22_2026_214)--
Content-Type: Text/X-Patch; charset=us-ascii
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment;
filename="0002-Use-double-quotes-in-message.patch"
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH 1/4] Make propgraph object descriptions translatable
@ 2026-05-26 07:14 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-05-26 07:14 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
Build the whole object description from a single format string
instead.
---
src/backend/catalog/objectaddress.c | 61 ++++++++++++++++++++---------
1 file changed, 43 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..c107d0fb0e4 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,15 +4092,15 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+ Assert(objdesc.len > 0);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
ReleaseSysCache(tup);
break;
@@ -4109,6 +4112,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,9 +4131,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4137,6 +4147,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4161,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4175,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,9 +4194,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4189,6 +4210,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4224,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.47.3
----Next_Part(Thu_May_28_12_16_22_2026_214)--
Content-Type: Text/X-Patch; charset=us-ascii
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment;
filename="0002-Use-double-quotes-in-message.patch"
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH 1/4] Make propgraph object descriptions translatable
@ 2026-05-26 07:14 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-05-26 07:14 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
Build the whole object description from a single format string
instead.
---
src/backend/catalog/objectaddress.c | 61 ++++++++++++++++++++---------
1 file changed, 43 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..c107d0fb0e4 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,15 +4092,15 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+ Assert(objdesc.len > 0);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
ReleaseSysCache(tup);
break;
@@ -4109,6 +4112,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,9 +4131,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4137,6 +4147,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4161,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4175,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,9 +4194,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4189,6 +4210,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4224,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.47.3
----Next_Part(Thu_May_28_12_16_22_2026_214)--
Content-Type: Text/X-Patch; charset=us-ascii
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment;
filename="0002-Use-double-quotes-in-message.patch"
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH 1/4] Make propgraph object descriptions translatable
@ 2026-05-26 07:14 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-05-26 07:14 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
Build the whole object description from a single format string
instead.
---
src/backend/catalog/objectaddress.c | 61 ++++++++++++++++++++---------
1 file changed, 43 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..c107d0fb0e4 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,15 +4092,15 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+ Assert(objdesc.len > 0);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
ReleaseSysCache(tup);
break;
@@ -4109,6 +4112,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,9 +4131,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4137,6 +4147,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4161,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4175,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,9 +4194,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4189,6 +4210,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4224,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.47.3
----Next_Part(Thu_May_28_12_16_22_2026_214)--
Content-Type: Text/X-Patch; charset=us-ascii
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment;
filename="0002-Use-double-quotes-in-message.patch"
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH 1/4] Make propgraph object descriptions translatable
@ 2026-05-26 07:14 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-05-26 07:14 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
Build the whole object description from a single format string
instead.
---
src/backend/catalog/objectaddress.c | 61 ++++++++++++++++++++---------
1 file changed, 43 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..c107d0fb0e4 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,15 +4092,15 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+ Assert(objdesc.len > 0);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
ReleaseSysCache(tup);
break;
@@ -4109,6 +4112,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,9 +4131,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4137,6 +4147,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4161,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4175,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,9 +4194,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4189,6 +4210,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4224,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.47.3
----Next_Part(Thu_May_28_12_16_22_2026_214)--
Content-Type: Text/X-Patch; charset=us-ascii
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment;
filename="0002-Use-double-quotes-in-message.patch"
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH 1/4] Make propgraph object descriptions translatable
@ 2026-05-26 07:14 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-05-26 07:14 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
Build the whole object description from a single format string
instead.
---
src/backend/catalog/objectaddress.c | 61 ++++++++++++++++++++---------
1 file changed, 43 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..c107d0fb0e4 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,15 +4092,15 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+ Assert(objdesc.len > 0);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
ReleaseSysCache(tup);
break;
@@ -4109,6 +4112,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,9 +4131,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4137,6 +4147,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4161,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4175,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,9 +4194,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4189,6 +4210,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4224,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.47.3
----Next_Part(Thu_May_28_12_16_22_2026_214)--
Content-Type: Text/X-Patch; charset=us-ascii
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment;
filename="0002-Use-double-quotes-in-message.patch"
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH 1/4] Make propgraph object descriptions translatable
@ 2026-05-26 07:14 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-05-26 07:14 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
Build the whole object description from a single format string
instead.
---
src/backend/catalog/objectaddress.c | 61 ++++++++++++++++++++---------
1 file changed, 43 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..c107d0fb0e4 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,15 +4092,15 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+ Assert(objdesc.len > 0);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
ReleaseSysCache(tup);
break;
@@ -4109,6 +4112,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,9 +4131,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4137,6 +4147,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4161,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4175,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,9 +4194,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4189,6 +4210,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4224,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.47.3
----Next_Part(Thu_May_28_12_16_22_2026_214)--
Content-Type: Text/X-Patch; charset=us-ascii
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment;
filename="0002-Use-double-quotes-in-message.patch"
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH 1/4] Make propgraph object descriptions translatable
@ 2026-05-26 07:14 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-05-26 07:14 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
Build the whole object description from a single format string
instead.
---
src/backend/catalog/objectaddress.c | 61 ++++++++++++++++++++---------
1 file changed, 43 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..c107d0fb0e4 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,15 +4092,15 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+ Assert(objdesc.len > 0);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
ReleaseSysCache(tup);
break;
@@ -4109,6 +4112,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,9 +4131,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4137,6 +4147,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4161,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4175,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,9 +4194,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4189,6 +4210,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4224,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.47.3
----Next_Part(Thu_May_28_12_16_22_2026_214)--
Content-Type: Text/X-Patch; charset=us-ascii
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment;
filename="0002-Use-double-quotes-in-message.patch"
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH 1/4] Make propgraph object descriptions translatable
@ 2026-05-26 07:14 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-05-26 07:14 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
Build the whole object description from a single format string
instead.
---
src/backend/catalog/objectaddress.c | 61 ++++++++++++++++++++---------
1 file changed, 43 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..c107d0fb0e4 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,15 +4092,15 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+ Assert(objdesc.len > 0);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
ReleaseSysCache(tup);
break;
@@ -4109,6 +4112,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,9 +4131,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4137,6 +4147,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4161,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4175,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,9 +4194,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4189,6 +4210,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4224,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.47.3
----Next_Part(Thu_May_28_12_16_22_2026_214)--
Content-Type: Text/X-Patch; charset=us-ascii
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment;
filename="0002-Use-double-quotes-in-message.patch"
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH 1/4] Make propgraph object descriptions translatable
@ 2026-05-26 07:14 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-05-26 07:14 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
Build the whole object description from a single format string
instead.
---
src/backend/catalog/objectaddress.c | 61 ++++++++++++++++++++---------
1 file changed, 43 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..c107d0fb0e4 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,15 +4092,15 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+ Assert(objdesc.len > 0);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
ReleaseSysCache(tup);
break;
@@ -4109,6 +4112,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,9 +4131,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4137,6 +4147,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4161,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4175,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,9 +4194,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4189,6 +4210,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4224,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.47.3
----Next_Part(Thu_May_28_12_16_22_2026_214)--
Content-Type: Text/X-Patch; charset=us-ascii
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment;
filename="0002-Use-double-quotes-in-message.patch"
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH 1/4] Make propgraph object descriptions translatable
@ 2026-05-26 07:14 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-05-26 07:14 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
Build the whole object description from a single format string
instead.
---
src/backend/catalog/objectaddress.c | 61 ++++++++++++++++++++---------
1 file changed, 43 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..c107d0fb0e4 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,15 +4092,15 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+ Assert(objdesc.len > 0);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
ReleaseSysCache(tup);
break;
@@ -4109,6 +4112,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,9 +4131,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4137,6 +4147,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4161,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4175,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,9 +4194,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4189,6 +4210,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4224,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.47.3
----Next_Part(Thu_May_28_12_16_22_2026_214)--
Content-Type: Text/X-Patch; charset=us-ascii
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment;
filename="0002-Use-double-quotes-in-message.patch"
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH 1/4] Make propgraph object descriptions translatable
@ 2026-05-26 07:14 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-05-26 07:14 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
Build the whole object description from a single format string
instead.
---
src/backend/catalog/objectaddress.c | 61 ++++++++++++++++++++---------
1 file changed, 43 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..c107d0fb0e4 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,15 +4092,15 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+ Assert(objdesc.len > 0);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
ReleaseSysCache(tup);
break;
@@ -4109,6 +4112,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,9 +4131,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4137,6 +4147,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4161,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4175,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,9 +4194,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4189,6 +4210,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4224,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.47.3
----Next_Part(Thu_May_28_12_16_22_2026_214)--
Content-Type: Text/X-Patch; charset=us-ascii
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment;
filename="0002-Use-double-quotes-in-message.patch"
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH 1/4] Make propgraph object descriptions translatable
@ 2026-05-26 07:14 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-05-26 07:14 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
Build the whole object description from a single format string
instead.
---
src/backend/catalog/objectaddress.c | 61 ++++++++++++++++++++---------
1 file changed, 43 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..c107d0fb0e4 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,15 +4092,15 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+ Assert(objdesc.len > 0);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
ReleaseSysCache(tup);
break;
@@ -4109,6 +4112,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,9 +4131,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4137,6 +4147,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4161,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4175,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,9 +4194,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4189,6 +4210,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4224,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.47.3
----Next_Part(Thu_May_28_12_16_22_2026_214)--
Content-Type: Text/X-Patch; charset=us-ascii
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment;
filename="0002-Use-double-quotes-in-message.patch"
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH 1/4] Make propgraph object descriptions translatable
@ 2026-05-26 07:14 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-05-26 07:14 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
Build the whole object description from a single format string
instead.
---
src/backend/catalog/objectaddress.c | 61 ++++++++++++++++++++---------
1 file changed, 43 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..c107d0fb0e4 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,15 +4092,15 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+ Assert(objdesc.len > 0);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
ReleaseSysCache(tup);
break;
@@ -4109,6 +4112,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,9 +4131,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4137,6 +4147,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4161,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4175,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,9 +4194,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4189,6 +4210,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4224,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.47.3
----Next_Part(Thu_May_28_12_16_22_2026_214)--
Content-Type: Text/X-Patch; charset=us-ascii
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment;
filename="0002-Use-double-quotes-in-message.patch"
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH 1/4] Make propgraph object descriptions translatable
@ 2026-05-26 07:14 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-05-26 07:14 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
Build the whole object description from a single format string
instead.
---
src/backend/catalog/objectaddress.c | 61 ++++++++++++++++++++---------
1 file changed, 43 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..c107d0fb0e4 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,15 +4092,15 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+ Assert(objdesc.len > 0);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
ReleaseSysCache(tup);
break;
@@ -4109,6 +4112,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,9 +4131,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4137,6 +4147,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4161,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4175,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,9 +4194,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4189,6 +4210,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4224,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.47.3
----Next_Part(Thu_May_28_12_16_22_2026_214)--
Content-Type: Text/X-Patch; charset=us-ascii
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment;
filename="0002-Use-double-quotes-in-message.patch"
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH 1/4] Make propgraph object descriptions translatable
@ 2026-05-26 07:14 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-05-26 07:14 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
Build the whole object description from a single format string
instead.
---
src/backend/catalog/objectaddress.c | 61 ++++++++++++++++++++---------
1 file changed, 43 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..c107d0fb0e4 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,15 +4092,15 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+ Assert(objdesc.len > 0);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
ReleaseSysCache(tup);
break;
@@ -4109,6 +4112,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,9 +4131,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4137,6 +4147,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4161,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4175,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,9 +4194,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4189,6 +4210,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4224,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.47.3
----Next_Part(Thu_May_28_12_16_22_2026_214)--
Content-Type: Text/X-Patch; charset=us-ascii
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment;
filename="0002-Use-double-quotes-in-message.patch"
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH 1/4] Make propgraph object descriptions translatable
@ 2026-05-26 07:14 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-05-26 07:14 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
Build the whole object description from a single format string
instead.
---
src/backend/catalog/objectaddress.c | 61 ++++++++++++++++++++---------
1 file changed, 43 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..c107d0fb0e4 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,15 +4092,15 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+ Assert(objdesc.len > 0);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
ReleaseSysCache(tup);
break;
@@ -4109,6 +4112,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,9 +4131,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4137,6 +4147,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4161,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4175,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,9 +4194,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4189,6 +4210,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4224,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.47.3
----Next_Part(Thu_May_28_12_16_22_2026_214)--
Content-Type: Text/X-Patch; charset=us-ascii
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment;
filename="0002-Use-double-quotes-in-message.patch"
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH 1/4] Make propgraph object descriptions translatable
@ 2026-05-26 07:14 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-05-26 07:14 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
Build the whole object description from a single format string
instead.
---
src/backend/catalog/objectaddress.c | 61 ++++++++++++++++++++---------
1 file changed, 43 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..c107d0fb0e4 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,15 +4092,15 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+ Assert(objdesc.len > 0);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
ReleaseSysCache(tup);
break;
@@ -4109,6 +4112,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,9 +4131,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4137,6 +4147,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4161,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4175,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,9 +4194,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4189,6 +4210,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4224,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.47.3
----Next_Part(Thu_May_28_12_16_22_2026_214)--
Content-Type: Text/X-Patch; charset=us-ascii
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment;
filename="0002-Use-double-quotes-in-message.patch"
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH 1/4] Make propgraph object descriptions translatable
@ 2026-05-26 07:14 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-05-26 07:14 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
Build the whole object description from a single format string
instead.
---
src/backend/catalog/objectaddress.c | 61 ++++++++++++++++++++---------
1 file changed, 43 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..c107d0fb0e4 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,15 +4092,15 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+ Assert(objdesc.len > 0);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
ReleaseSysCache(tup);
break;
@@ -4109,6 +4112,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,9 +4131,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4137,6 +4147,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4161,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4175,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,9 +4194,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4189,6 +4210,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4224,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.47.3
----Next_Part(Thu_May_28_12_16_22_2026_214)--
Content-Type: Text/X-Patch; charset=us-ascii
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment;
filename="0002-Use-double-quotes-in-message.patch"
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH 1/4] Make propgraph object descriptions translatable
@ 2026-05-26 07:14 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-05-26 07:14 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
Build the whole object description from a single format string
instead.
---
src/backend/catalog/objectaddress.c | 61 ++++++++++++++++++++---------
1 file changed, 43 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..c107d0fb0e4 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,15 +4092,15 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+ Assert(objdesc.len > 0);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
ReleaseSysCache(tup);
break;
@@ -4109,6 +4112,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,9 +4131,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4137,6 +4147,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4161,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4175,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,9 +4194,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4189,6 +4210,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4224,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.47.3
----Next_Part(Thu_May_28_12_16_22_2026_214)--
Content-Type: Text/X-Patch; charset=us-ascii
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment;
filename="0002-Use-double-quotes-in-message.patch"
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH 1/4] Make propgraph object descriptions translatable
@ 2026-05-26 07:14 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-05-26 07:14 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
Build the whole object description from a single format string
instead.
---
src/backend/catalog/objectaddress.c | 61 ++++++++++++++++++++---------
1 file changed, 43 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..c107d0fb0e4 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,15 +4092,15 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+ Assert(objdesc.len > 0);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
ReleaseSysCache(tup);
break;
@@ -4109,6 +4112,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,9 +4131,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4137,6 +4147,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4161,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4175,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,9 +4194,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4189,6 +4210,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4224,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.47.3
----Next_Part(Thu_May_28_12_16_22_2026_214)--
Content-Type: Text/X-Patch; charset=us-ascii
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment;
filename="0002-Use-double-quotes-in-message.patch"
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH 1/4] Make propgraph object descriptions translatable
@ 2026-05-26 07:14 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-05-26 07:14 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
Build the whole object description from a single format string
instead.
---
src/backend/catalog/objectaddress.c | 61 ++++++++++++++++++++---------
1 file changed, 43 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..c107d0fb0e4 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,15 +4092,15 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+ Assert(objdesc.len > 0);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
ReleaseSysCache(tup);
break;
@@ -4109,6 +4112,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,9 +4131,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4137,6 +4147,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4161,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4175,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,9 +4194,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4189,6 +4210,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4224,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.47.3
----Next_Part(Thu_May_28_12_16_22_2026_214)--
Content-Type: Text/X-Patch; charset=us-ascii
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment;
filename="0002-Use-double-quotes-in-message.patch"
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH 1/4] Make propgraph object descriptions translatable
@ 2026-05-26 07:14 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-05-26 07:14 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
Build the whole object description from a single format string
instead.
---
src/backend/catalog/objectaddress.c | 61 ++++++++++++++++++++---------
1 file changed, 43 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..c107d0fb0e4 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,15 +4092,15 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+ Assert(objdesc.len > 0);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
ReleaseSysCache(tup);
break;
@@ -4109,6 +4112,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,9 +4131,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4137,6 +4147,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4161,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4175,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,9 +4194,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4189,6 +4210,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4224,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.47.3
----Next_Part(Thu_May_28_12_16_22_2026_214)--
Content-Type: Text/X-Patch; charset=us-ascii
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment;
filename="0002-Use-double-quotes-in-message.patch"
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH 1/4] Make propgraph object descriptions translatable
@ 2026-05-26 07:14 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-05-26 07:14 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
Build the whole object description from a single format string
instead.
---
src/backend/catalog/objectaddress.c | 61 ++++++++++++++++++++---------
1 file changed, 43 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..c107d0fb0e4 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,15 +4092,15 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+ Assert(objdesc.len > 0);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
ReleaseSysCache(tup);
break;
@@ -4109,6 +4112,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,9 +4131,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4137,6 +4147,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4161,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4175,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,9 +4194,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4189,6 +4210,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4224,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.47.3
----Next_Part(Thu_May_28_12_16_22_2026_214)--
Content-Type: Text/X-Patch; charset=us-ascii
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment;
filename="0002-Use-double-quotes-in-message.patch"
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH 1/4] Make propgraph object descriptions translatable
@ 2026-05-26 07:14 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-05-26 07:14 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
Build the whole object description from a single format string
instead.
---
src/backend/catalog/objectaddress.c | 61 ++++++++++++++++++++---------
1 file changed, 43 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..c107d0fb0e4 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,15 +4092,15 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+ Assert(objdesc.len > 0);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
ReleaseSysCache(tup);
break;
@@ -4109,6 +4112,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,9 +4131,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4137,6 +4147,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4161,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4175,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,9 +4194,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4189,6 +4210,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4224,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.47.3
----Next_Part(Thu_May_28_12_16_22_2026_214)--
Content-Type: Text/X-Patch; charset=us-ascii
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment;
filename="0002-Use-double-quotes-in-message.patch"
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH 1/4] Make propgraph object descriptions translatable
@ 2026-05-26 07:14 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-05-26 07:14 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
Build the whole object description from a single format string
instead.
---
src/backend/catalog/objectaddress.c | 61 ++++++++++++++++++++---------
1 file changed, 43 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..c107d0fb0e4 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,15 +4092,15 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+ Assert(objdesc.len > 0);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
ReleaseSysCache(tup);
break;
@@ -4109,6 +4112,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,9 +4131,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4137,6 +4147,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4161,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4175,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,9 +4194,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4189,6 +4210,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4224,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.47.3
----Next_Part(Thu_May_28_12_16_22_2026_214)--
Content-Type: Text/X-Patch; charset=us-ascii
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment;
filename="0002-Use-double-quotes-in-message.patch"
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH 1/4] Make propgraph object descriptions translatable
@ 2026-05-26 07:14 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-05-26 07:14 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
Build the whole object description from a single format string
instead.
---
src/backend/catalog/objectaddress.c | 61 ++++++++++++++++++++---------
1 file changed, 43 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..c107d0fb0e4 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,15 +4092,15 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+ Assert(objdesc.len > 0);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
ReleaseSysCache(tup);
break;
@@ -4109,6 +4112,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,9 +4131,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4137,6 +4147,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4161,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4175,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,9 +4194,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4189,6 +4210,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4224,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.47.3
----Next_Part(Thu_May_28_12_16_22_2026_214)--
Content-Type: Text/X-Patch; charset=us-ascii
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment;
filename="0002-Use-double-quotes-in-message.patch"
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH 1/4] Make propgraph object descriptions translatable
@ 2026-05-26 07:14 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-05-26 07:14 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
Build the whole object description from a single format string
instead.
---
src/backend/catalog/objectaddress.c | 61 ++++++++++++++++++++---------
1 file changed, 43 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..c107d0fb0e4 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,15 +4092,15 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+ Assert(objdesc.len > 0);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
ReleaseSysCache(tup);
break;
@@ -4109,6 +4112,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,9 +4131,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4137,6 +4147,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4161,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4175,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,9 +4194,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4189,6 +4210,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4224,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.47.3
----Next_Part(Thu_May_28_12_16_22_2026_214)--
Content-Type: Text/X-Patch; charset=us-ascii
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment;
filename="0002-Use-double-quotes-in-message.patch"
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH 1/4] Make propgraph object descriptions translatable
@ 2026-05-26 07:14 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-05-26 07:14 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
Build the whole object description from a single format string
instead.
---
src/backend/catalog/objectaddress.c | 61 ++++++++++++++++++++---------
1 file changed, 43 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..c107d0fb0e4 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,15 +4092,15 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+ Assert(objdesc.len > 0);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
ReleaseSysCache(tup);
break;
@@ -4109,6 +4112,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,9 +4131,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4137,6 +4147,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4161,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4175,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,9 +4194,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4189,6 +4210,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4224,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.47.3
----Next_Part(Thu_May_28_12_16_22_2026_214)--
Content-Type: Text/X-Patch; charset=us-ascii
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment;
filename="0002-Use-double-quotes-in-message.patch"
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH 1/4] Make propgraph object descriptions translatable
@ 2026-05-26 07:14 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-05-26 07:14 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
Build the whole object description from a single format string
instead.
---
src/backend/catalog/objectaddress.c | 61 ++++++++++++++++++++---------
1 file changed, 43 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..c107d0fb0e4 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,15 +4092,15 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+ Assert(objdesc.len > 0);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
ReleaseSysCache(tup);
break;
@@ -4109,6 +4112,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,9 +4131,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4137,6 +4147,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4161,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4175,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,9 +4194,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4189,6 +4210,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4224,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.47.3
----Next_Part(Thu_May_28_12_16_22_2026_214)--
Content-Type: Text/X-Patch; charset=us-ascii
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment;
filename="0002-Use-double-quotes-in-message.patch"
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH 1/4] Make propgraph object descriptions translatable
@ 2026-05-26 07:14 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-05-26 07:14 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
Build the whole object description from a single format string
instead.
---
src/backend/catalog/objectaddress.c | 61 ++++++++++++++++++++---------
1 file changed, 43 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..c107d0fb0e4 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,15 +4092,15 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+ Assert(objdesc.len > 0);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
ReleaseSysCache(tup);
break;
@@ -4109,6 +4112,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,9 +4131,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4137,6 +4147,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4161,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4175,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,9 +4194,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4189,6 +4210,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4224,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.47.3
----Next_Part(Thu_May_28_12_16_22_2026_214)--
Content-Type: Text/X-Patch; charset=us-ascii
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment;
filename="0002-Use-double-quotes-in-message.patch"
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH 1/4] Make propgraph object descriptions translatable
@ 2026-05-26 07:14 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-05-26 07:14 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
Build the whole object description from a single format string
instead.
---
src/backend/catalog/objectaddress.c | 61 ++++++++++++++++++++---------
1 file changed, 43 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..c107d0fb0e4 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,15 +4092,15 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+ Assert(objdesc.len > 0);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
ReleaseSysCache(tup);
break;
@@ -4109,6 +4112,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,9 +4131,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4137,6 +4147,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4161,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4175,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,9 +4194,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4189,6 +4210,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4224,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.47.3
----Next_Part(Thu_May_28_12_16_22_2026_214)--
Content-Type: Text/X-Patch; charset=us-ascii
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment;
filename="0002-Use-double-quotes-in-message.patch"
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH 1/4] Make propgraph object descriptions translatable
@ 2026-05-26 07:14 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-05-26 07:14 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
Build the whole object description from a single format string
instead.
---
src/backend/catalog/objectaddress.c | 61 ++++++++++++++++++++---------
1 file changed, 43 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..c107d0fb0e4 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,15 +4092,15 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+ Assert(objdesc.len > 0);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
ReleaseSysCache(tup);
break;
@@ -4109,6 +4112,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,9 +4131,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4137,6 +4147,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4161,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4175,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,9 +4194,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4189,6 +4210,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4224,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.47.3
----Next_Part(Thu_May_28_12_16_22_2026_214)--
Content-Type: Text/X-Patch; charset=us-ascii
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment;
filename="0002-Use-double-quotes-in-message.patch"
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH 1/4] Make propgraph object descriptions translatable
@ 2026-05-26 07:14 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-05-26 07:14 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
Build the whole object description from a single format string
instead.
---
src/backend/catalog/objectaddress.c | 61 ++++++++++++++++++++---------
1 file changed, 43 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..c107d0fb0e4 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,15 +4092,15 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+ Assert(objdesc.len > 0);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
ReleaseSysCache(tup);
break;
@@ -4109,6 +4112,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,9 +4131,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4137,6 +4147,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4161,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4175,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,9 +4194,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4189,6 +4210,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4224,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.47.3
----Next_Part(Thu_May_28_12_16_22_2026_214)--
Content-Type: Text/X-Patch; charset=us-ascii
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment;
filename="0002-Use-double-quotes-in-message.patch"
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH 1/4] Make propgraph object descriptions translatable
@ 2026-05-26 07:14 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-05-26 07:14 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
Build the whole object description from a single format string
instead.
---
src/backend/catalog/objectaddress.c | 61 ++++++++++++++++++++---------
1 file changed, 43 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..c107d0fb0e4 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,15 +4092,15 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+ Assert(objdesc.len > 0);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
ReleaseSysCache(tup);
break;
@@ -4109,6 +4112,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,9 +4131,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4137,6 +4147,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4161,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4175,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,9 +4194,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4189,6 +4210,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4224,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.47.3
----Next_Part(Thu_May_28_12_16_22_2026_214)--
Content-Type: Text/X-Patch; charset=us-ascii
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment;
filename="0002-Use-double-quotes-in-message.patch"
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH 1/4] Make propgraph object descriptions translatable
@ 2026-05-26 07:14 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-05-26 07:14 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
Build the whole object description from a single format string
instead.
---
src/backend/catalog/objectaddress.c | 61 ++++++++++++++++++++---------
1 file changed, 43 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..c107d0fb0e4 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,15 +4092,15 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+ Assert(objdesc.len > 0);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
ReleaseSysCache(tup);
break;
@@ -4109,6 +4112,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,9 +4131,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4137,6 +4147,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4161,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4175,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,9 +4194,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4189,6 +4210,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4224,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.47.3
----Next_Part(Thu_May_28_12_16_22_2026_214)--
Content-Type: Text/X-Patch; charset=us-ascii
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment;
filename="0002-Use-double-quotes-in-message.patch"
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH 1/4] Make propgraph object descriptions translatable
@ 2026-05-26 07:14 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-05-26 07:14 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
Build the whole object description from a single format string
instead.
---
src/backend/catalog/objectaddress.c | 61 ++++++++++++++++++++---------
1 file changed, 43 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..c107d0fb0e4 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,15 +4092,15 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+ Assert(objdesc.len > 0);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
ReleaseSysCache(tup);
break;
@@ -4109,6 +4112,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,9 +4131,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4137,6 +4147,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4161,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4175,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,9 +4194,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4189,6 +4210,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4224,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.47.3
----Next_Part(Thu_May_28_12_16_22_2026_214)--
Content-Type: Text/X-Patch; charset=us-ascii
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment;
filename="0002-Use-double-quotes-in-message.patch"
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH 1/4] Make propgraph object descriptions translatable
@ 2026-05-26 07:14 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-05-26 07:14 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
Build the whole object description from a single format string
instead.
---
src/backend/catalog/objectaddress.c | 61 ++++++++++++++++++++---------
1 file changed, 43 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..c107d0fb0e4 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,15 +4092,15 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+ Assert(objdesc.len > 0);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
ReleaseSysCache(tup);
break;
@@ -4109,6 +4112,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,9 +4131,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4137,6 +4147,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4161,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4175,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,9 +4194,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4189,6 +4210,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4224,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.47.3
----Next_Part(Thu_May_28_12_16_22_2026_214)--
Content-Type: Text/X-Patch; charset=us-ascii
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment;
filename="0002-Use-double-quotes-in-message.patch"
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH 1/4] Make propgraph object descriptions translatable
@ 2026-05-26 07:14 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-05-26 07:14 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
Build the whole object description from a single format string
instead.
---
src/backend/catalog/objectaddress.c | 61 ++++++++++++++++++++---------
1 file changed, 43 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..c107d0fb0e4 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,15 +4092,15 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+ Assert(objdesc.len > 0);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
ReleaseSysCache(tup);
break;
@@ -4109,6 +4112,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,9 +4131,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4137,6 +4147,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4161,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4175,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,9 +4194,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4189,6 +4210,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4224,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.47.3
----Next_Part(Thu_May_28_12_16_22_2026_214)--
Content-Type: Text/X-Patch; charset=us-ascii
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment;
filename="0002-Use-double-quotes-in-message.patch"
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH 1/4] Make propgraph object descriptions translatable
@ 2026-05-26 07:14 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-05-26 07:14 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
Build the whole object description from a single format string
instead.
---
src/backend/catalog/objectaddress.c | 61 ++++++++++++++++++++---------
1 file changed, 43 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..c107d0fb0e4 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,15 +4092,15 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+ Assert(objdesc.len > 0);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
ReleaseSysCache(tup);
break;
@@ -4109,6 +4112,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,9 +4131,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4137,6 +4147,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4161,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4175,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,9 +4194,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4189,6 +4210,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4224,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.47.3
----Next_Part(Thu_May_28_12_16_22_2026_214)--
Content-Type: Text/X-Patch; charset=us-ascii
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment;
filename="0002-Use-double-quotes-in-message.patch"
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH 1/4] Make propgraph object descriptions translatable
@ 2026-05-26 07:14 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-05-26 07:14 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
Build the whole object description from a single format string
instead.
---
src/backend/catalog/objectaddress.c | 61 ++++++++++++++++++++---------
1 file changed, 43 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..c107d0fb0e4 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,15 +4092,15 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+ Assert(objdesc.len > 0);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
ReleaseSysCache(tup);
break;
@@ -4109,6 +4112,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,9 +4131,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4137,6 +4147,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4161,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4175,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,9 +4194,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4189,6 +4210,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4224,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.47.3
----Next_Part(Thu_May_28_12_16_22_2026_214)--
Content-Type: Text/X-Patch; charset=us-ascii
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment;
filename="0002-Use-double-quotes-in-message.patch"
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH 1/4] Make propgraph object descriptions translatable
@ 2026-05-26 07:14 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-05-26 07:14 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
Build the whole object description from a single format string
instead.
---
src/backend/catalog/objectaddress.c | 61 ++++++++++++++++++++---------
1 file changed, 43 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..c107d0fb0e4 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,15 +4092,15 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+ Assert(objdesc.len > 0);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
ReleaseSysCache(tup);
break;
@@ -4109,6 +4112,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,9 +4131,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4137,6 +4147,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4161,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4175,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,9 +4194,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4189,6 +4210,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4224,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.47.3
----Next_Part(Thu_May_28_12_16_22_2026_214)--
Content-Type: Text/X-Patch; charset=us-ascii
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment;
filename="0002-Use-double-quotes-in-message.patch"
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH 1/4] Make propgraph object descriptions translatable
@ 2026-05-26 07:14 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-05-26 07:14 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
Build the whole object description from a single format string
instead.
---
src/backend/catalog/objectaddress.c | 61 ++++++++++++++++++++---------
1 file changed, 43 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..c107d0fb0e4 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,15 +4092,15 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+ Assert(objdesc.len > 0);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
ReleaseSysCache(tup);
break;
@@ -4109,6 +4112,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,9 +4131,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4137,6 +4147,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4161,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4175,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,9 +4194,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4189,6 +4210,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4224,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.47.3
----Next_Part(Thu_May_28_12_16_22_2026_214)--
Content-Type: Text/X-Patch; charset=us-ascii
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment;
filename="0002-Use-double-quotes-in-message.patch"
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH 1/4] Make propgraph object descriptions translatable
@ 2026-05-26 07:14 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-05-26 07:14 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
Build the whole object description from a single format string
instead.
---
src/backend/catalog/objectaddress.c | 61 ++++++++++++++++++++---------
1 file changed, 43 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..c107d0fb0e4 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,15 +4092,15 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+ Assert(objdesc.len > 0);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
ReleaseSysCache(tup);
break;
@@ -4109,6 +4112,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,9 +4131,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4137,6 +4147,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4161,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4175,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,9 +4194,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4189,6 +4210,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4224,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.47.3
----Next_Part(Thu_May_28_12_16_22_2026_214)--
Content-Type: Text/X-Patch; charset=us-ascii
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment;
filename="0002-Use-double-quotes-in-message.patch"
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH 1/4] Make propgraph object descriptions translatable
@ 2026-05-26 07:14 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-05-26 07:14 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
Build the whole object description from a single format string
instead.
---
src/backend/catalog/objectaddress.c | 61 ++++++++++++++++++++---------
1 file changed, 43 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..c107d0fb0e4 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,15 +4092,15 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+ Assert(objdesc.len > 0);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
ReleaseSysCache(tup);
break;
@@ -4109,6 +4112,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,9 +4131,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4137,6 +4147,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4161,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4175,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,9 +4194,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4189,6 +4210,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4224,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.47.3
----Next_Part(Thu_May_28_12_16_22_2026_214)--
Content-Type: Text/X-Patch; charset=us-ascii
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment;
filename="0002-Use-double-quotes-in-message.patch"
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH 1/4] Make propgraph object descriptions translatable
@ 2026-05-26 07:14 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-05-26 07:14 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
Build the whole object description from a single format string
instead.
---
src/backend/catalog/objectaddress.c | 61 ++++++++++++++++++++---------
1 file changed, 43 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..c107d0fb0e4 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,15 +4092,15 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+ Assert(objdesc.len > 0);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
ReleaseSysCache(tup);
break;
@@ -4109,6 +4112,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,9 +4131,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4137,6 +4147,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4161,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4175,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,9 +4194,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4189,6 +4210,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4224,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.47.3
----Next_Part(Thu_May_28_12_16_22_2026_214)--
Content-Type: Text/X-Patch; charset=us-ascii
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment;
filename="0002-Use-double-quotes-in-message.patch"
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH 1/4] Make propgraph object descriptions translatable
@ 2026-05-26 07:14 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-05-26 07:14 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
Build the whole object description from a single format string
instead.
---
src/backend/catalog/objectaddress.c | 61 ++++++++++++++++++++---------
1 file changed, 43 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..c107d0fb0e4 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,15 +4092,15 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+ Assert(objdesc.len > 0);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
ReleaseSysCache(tup);
break;
@@ -4109,6 +4112,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,9 +4131,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4137,6 +4147,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4161,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4175,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,9 +4194,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4189,6 +4210,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4224,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.47.3
----Next_Part(Thu_May_28_12_16_22_2026_214)--
Content-Type: Text/X-Patch; charset=us-ascii
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment;
filename="0002-Use-double-quotes-in-message.patch"
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH 1/4] Make propgraph object descriptions translatable
@ 2026-05-26 07:14 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-05-26 07:14 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
Build the whole object description from a single format string
instead.
---
src/backend/catalog/objectaddress.c | 61 ++++++++++++++++++++---------
1 file changed, 43 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..c107d0fb0e4 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,15 +4092,15 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+ Assert(objdesc.len > 0);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
ReleaseSysCache(tup);
break;
@@ -4109,6 +4112,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,9 +4131,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4137,6 +4147,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4161,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4175,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,9 +4194,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4189,6 +4210,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4224,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.47.3
----Next_Part(Thu_May_28_12_16_22_2026_214)--
Content-Type: Text/X-Patch; charset=us-ascii
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment;
filename="0002-Use-double-quotes-in-message.patch"
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH 1/4] Make propgraph object descriptions translatable
@ 2026-05-26 07:14 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-05-26 07:14 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
Build the whole object description from a single format string
instead.
---
src/backend/catalog/objectaddress.c | 61 ++++++++++++++++++++---------
1 file changed, 43 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..c107d0fb0e4 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,15 +4092,15 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+ Assert(objdesc.len > 0);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
ReleaseSysCache(tup);
break;
@@ -4109,6 +4112,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,9 +4131,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4137,6 +4147,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4161,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4175,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,9 +4194,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4189,6 +4210,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4224,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.47.3
----Next_Part(Thu_May_28_12_16_22_2026_214)--
Content-Type: Text/X-Patch; charset=us-ascii
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment;
filename="0002-Use-double-quotes-in-message.patch"
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH 1/4] Make propgraph object descriptions translatable
@ 2026-05-26 07:14 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-05-26 07:14 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
Build the whole object description from a single format string
instead.
---
src/backend/catalog/objectaddress.c | 61 ++++++++++++++++++++---------
1 file changed, 43 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..c107d0fb0e4 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,15 +4092,15 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+ Assert(objdesc.len > 0);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
ReleaseSysCache(tup);
break;
@@ -4109,6 +4112,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,9 +4131,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4137,6 +4147,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4161,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4175,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,9 +4194,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4189,6 +4210,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4224,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.47.3
----Next_Part(Thu_May_28_12_16_22_2026_214)--
Content-Type: Text/X-Patch; charset=us-ascii
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment;
filename="0002-Use-double-quotes-in-message.patch"
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH 1/4] Make propgraph object descriptions translatable
@ 2026-05-26 07:14 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-05-26 07:14 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
Build the whole object description from a single format string
instead.
---
src/backend/catalog/objectaddress.c | 61 ++++++++++++++++++++---------
1 file changed, 43 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..c107d0fb0e4 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,15 +4092,15 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+ Assert(objdesc.len > 0);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
ReleaseSysCache(tup);
break;
@@ -4109,6 +4112,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,9 +4131,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4137,6 +4147,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4161,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4175,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,9 +4194,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4189,6 +4210,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4224,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.47.3
----Next_Part(Thu_May_28_12_16_22_2026_214)--
Content-Type: Text/X-Patch; charset=us-ascii
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment;
filename="0002-Use-double-quotes-in-message.patch"
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH 1/4] Make propgraph object descriptions translatable
@ 2026-05-26 07:14 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-05-26 07:14 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
Build the whole object description from a single format string
instead.
---
src/backend/catalog/objectaddress.c | 61 ++++++++++++++++++++---------
1 file changed, 43 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..c107d0fb0e4 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,15 +4092,15 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+ Assert(objdesc.len > 0);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
ReleaseSysCache(tup);
break;
@@ -4109,6 +4112,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,9 +4131,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4137,6 +4147,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4161,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4175,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,9 +4194,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4189,6 +4210,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4224,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.47.3
----Next_Part(Thu_May_28_12_16_22_2026_214)--
Content-Type: Text/X-Patch; charset=us-ascii
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment;
filename="0002-Use-double-quotes-in-message.patch"
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH 1/4] Make propgraph object descriptions translatable
@ 2026-05-26 07:14 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-05-26 07:14 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
Build the whole object description from a single format string
instead.
---
src/backend/catalog/objectaddress.c | 61 ++++++++++++++++++++---------
1 file changed, 43 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..c107d0fb0e4 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,15 +4092,15 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+ Assert(objdesc.len > 0);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
ReleaseSysCache(tup);
break;
@@ -4109,6 +4112,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,9 +4131,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4137,6 +4147,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4161,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4175,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,9 +4194,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4189,6 +4210,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4224,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.47.3
----Next_Part(Thu_May_28_12_16_22_2026_214)--
Content-Type: Text/X-Patch; charset=us-ascii
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment;
filename="0002-Use-double-quotes-in-message.patch"
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH 1/4] Make propgraph object descriptions translatable
@ 2026-05-26 07:14 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-05-26 07:14 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
Build the whole object description from a single format string
instead.
---
src/backend/catalog/objectaddress.c | 61 ++++++++++++++++++++---------
1 file changed, 43 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..c107d0fb0e4 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,15 +4092,15 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+ Assert(objdesc.len > 0);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
ReleaseSysCache(tup);
break;
@@ -4109,6 +4112,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,9 +4131,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4137,6 +4147,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4161,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4175,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,9 +4194,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4189,6 +4210,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4224,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.47.3
----Next_Part(Thu_May_28_12_16_22_2026_214)--
Content-Type: Text/X-Patch; charset=us-ascii
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment;
filename="0002-Use-double-quotes-in-message.patch"
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH 1/4] Make propgraph object descriptions translatable
@ 2026-05-26 07:14 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-05-26 07:14 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
Build the whole object description from a single format string
instead.
---
src/backend/catalog/objectaddress.c | 61 ++++++++++++++++++++---------
1 file changed, 43 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..c107d0fb0e4 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,15 +4092,15 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+ Assert(objdesc.len > 0);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
ReleaseSysCache(tup);
break;
@@ -4109,6 +4112,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,9 +4131,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4137,6 +4147,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4161,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4175,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,9 +4194,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4189,6 +4210,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4224,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.47.3
----Next_Part(Thu_May_28_12_16_22_2026_214)--
Content-Type: Text/X-Patch; charset=us-ascii
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment;
filename="0002-Use-double-quotes-in-message.patch"
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH 1/4] Make propgraph object descriptions translatable
@ 2026-05-26 07:14 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-05-26 07:14 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
Build the whole object description from a single format string
instead.
---
src/backend/catalog/objectaddress.c | 61 ++++++++++++++++++++---------
1 file changed, 43 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..c107d0fb0e4 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,15 +4092,15 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+ Assert(objdesc.len > 0);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
ReleaseSysCache(tup);
break;
@@ -4109,6 +4112,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,9 +4131,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4137,6 +4147,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4161,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4175,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,9 +4194,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4189,6 +4210,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4224,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.47.3
----Next_Part(Thu_May_28_12_16_22_2026_214)--
Content-Type: Text/X-Patch; charset=us-ascii
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment;
filename="0002-Use-double-quotes-in-message.patch"
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH 1/4] Make propgraph object descriptions translatable
@ 2026-05-26 07:14 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-05-26 07:14 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
Build the whole object description from a single format string
instead.
---
src/backend/catalog/objectaddress.c | 61 ++++++++++++++++++++---------
1 file changed, 43 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..c107d0fb0e4 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,15 +4092,15 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+ Assert(objdesc.len > 0);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
ReleaseSysCache(tup);
break;
@@ -4109,6 +4112,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,9 +4131,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4137,6 +4147,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4161,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4175,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,9 +4194,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4189,6 +4210,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4224,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.47.3
----Next_Part(Thu_May_28_12_16_22_2026_214)--
Content-Type: Text/X-Patch; charset=us-ascii
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment;
filename="0002-Use-double-quotes-in-message.patch"
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH 1/4] Make propgraph object descriptions translatable
@ 2026-05-26 07:14 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-05-26 07:14 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
Build the whole object description from a single format string
instead.
---
src/backend/catalog/objectaddress.c | 61 ++++++++++++++++++++---------
1 file changed, 43 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..c107d0fb0e4 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,15 +4092,15 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+ Assert(objdesc.len > 0);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
ReleaseSysCache(tup);
break;
@@ -4109,6 +4112,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,9 +4131,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4137,6 +4147,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4161,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4175,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,9 +4194,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4189,6 +4210,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4224,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.47.3
----Next_Part(Thu_May_28_12_16_22_2026_214)--
Content-Type: Text/X-Patch; charset=us-ascii
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment;
filename="0002-Use-double-quotes-in-message.patch"
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH 1/4] Make propgraph object descriptions translatable
@ 2026-05-26 07:14 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-05-26 07:14 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
Build the whole object description from a single format string
instead.
---
src/backend/catalog/objectaddress.c | 61 ++++++++++++++++++++---------
1 file changed, 43 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..c107d0fb0e4 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,15 +4092,15 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+ Assert(objdesc.len > 0);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
ReleaseSysCache(tup);
break;
@@ -4109,6 +4112,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,9 +4131,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4137,6 +4147,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4161,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4175,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,9 +4194,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4189,6 +4210,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4224,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.47.3
----Next_Part(Thu_May_28_12_16_22_2026_214)--
Content-Type: Text/X-Patch; charset=us-ascii
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment;
filename="0002-Use-double-quotes-in-message.patch"
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH 1/4] Make propgraph object descriptions translatable
@ 2026-05-26 07:14 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-05-26 07:14 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
Build the whole object description from a single format string
instead.
---
src/backend/catalog/objectaddress.c | 61 ++++++++++++++++++++---------
1 file changed, 43 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..c107d0fb0e4 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,15 +4092,15 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+ Assert(objdesc.len > 0);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
ReleaseSysCache(tup);
break;
@@ -4109,6 +4112,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,9 +4131,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4137,6 +4147,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4161,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4175,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,9 +4194,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4189,6 +4210,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4224,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.47.3
----Next_Part(Thu_May_28_12_16_22_2026_214)--
Content-Type: Text/X-Patch; charset=us-ascii
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment;
filename="0002-Use-double-quotes-in-message.patch"
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH 1/4] Make propgraph object descriptions translatable
@ 2026-05-26 07:14 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-05-26 07:14 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
Build the whole object description from a single format string
instead.
---
src/backend/catalog/objectaddress.c | 61 ++++++++++++++++++++---------
1 file changed, 43 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..c107d0fb0e4 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,15 +4092,15 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+ Assert(objdesc.len > 0);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
ReleaseSysCache(tup);
break;
@@ -4109,6 +4112,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,9 +4131,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4137,6 +4147,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4161,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4175,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,9 +4194,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4189,6 +4210,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4224,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.47.3
----Next_Part(Thu_May_28_12_16_22_2026_214)--
Content-Type: Text/X-Patch; charset=us-ascii
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment;
filename="0002-Use-double-quotes-in-message.patch"
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH 1/4] Make propgraph object descriptions translatable
@ 2026-05-26 07:14 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-05-26 07:14 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
Build the whole object description from a single format string
instead.
---
src/backend/catalog/objectaddress.c | 61 ++++++++++++++++++++---------
1 file changed, 43 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..c107d0fb0e4 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,15 +4092,15 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+ Assert(objdesc.len > 0);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
ReleaseSysCache(tup);
break;
@@ -4109,6 +4112,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,9 +4131,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4137,6 +4147,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4161,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4175,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,9 +4194,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4189,6 +4210,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4224,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.47.3
----Next_Part(Thu_May_28_12_16_22_2026_214)--
Content-Type: Text/X-Patch; charset=us-ascii
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment;
filename="0002-Use-double-quotes-in-message.patch"
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH 1/4] Make propgraph object descriptions translatable
@ 2026-05-26 07:14 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-05-26 07:14 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
Build the whole object description from a single format string
instead.
---
src/backend/catalog/objectaddress.c | 61 ++++++++++++++++++++---------
1 file changed, 43 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..c107d0fb0e4 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,15 +4092,15 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+ Assert(objdesc.len > 0);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
ReleaseSysCache(tup);
break;
@@ -4109,6 +4112,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,9 +4131,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4137,6 +4147,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4161,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4175,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,9 +4194,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4189,6 +4210,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4224,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.47.3
----Next_Part(Thu_May_28_12_16_22_2026_214)--
Content-Type: Text/X-Patch; charset=us-ascii
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment;
filename="0002-Use-double-quotes-in-message.patch"
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH 1/4] Make propgraph object descriptions translatable
@ 2026-05-26 07:14 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-05-26 07:14 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
Build the whole object description from a single format string
instead.
---
src/backend/catalog/objectaddress.c | 61 ++++++++++++++++++++---------
1 file changed, 43 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..c107d0fb0e4 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,15 +4092,15 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+ Assert(objdesc.len > 0);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
ReleaseSysCache(tup);
break;
@@ -4109,6 +4112,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,9 +4131,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4137,6 +4147,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4161,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4175,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,9 +4194,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4189,6 +4210,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4224,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.47.3
----Next_Part(Thu_May_28_12_16_22_2026_214)--
Content-Type: Text/X-Patch; charset=us-ascii
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment;
filename="0002-Use-double-quotes-in-message.patch"
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH 1/4] Make propgraph object descriptions translatable
@ 2026-05-26 07:14 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-05-26 07:14 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
Build the whole object description from a single format string
instead.
---
src/backend/catalog/objectaddress.c | 61 ++++++++++++++++++++---------
1 file changed, 43 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..c107d0fb0e4 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,15 +4092,15 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+ Assert(objdesc.len > 0);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
ReleaseSysCache(tup);
break;
@@ -4109,6 +4112,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,9 +4131,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4137,6 +4147,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4161,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4175,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,9 +4194,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4189,6 +4210,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4224,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.47.3
----Next_Part(Thu_May_28_12_16_22_2026_214)--
Content-Type: Text/X-Patch; charset=us-ascii
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment;
filename="0002-Use-double-quotes-in-message.patch"
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH 1/4] Make propgraph object descriptions translatable
@ 2026-05-26 07:14 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-05-26 07:14 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
Build the whole object description from a single format string
instead.
---
src/backend/catalog/objectaddress.c | 61 ++++++++++++++++++++---------
1 file changed, 43 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..c107d0fb0e4 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,15 +4092,15 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+ Assert(objdesc.len > 0);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
ReleaseSysCache(tup);
break;
@@ -4109,6 +4112,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,9 +4131,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4137,6 +4147,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4161,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4175,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,9 +4194,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4189,6 +4210,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4224,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.47.3
----Next_Part(Thu_May_28_12_16_22_2026_214)--
Content-Type: Text/X-Patch; charset=us-ascii
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment;
filename="0002-Use-double-quotes-in-message.patch"
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH 1/4] Make propgraph object descriptions translatable
@ 2026-05-26 07:14 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-05-26 07:14 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
Build the whole object description from a single format string
instead.
---
src/backend/catalog/objectaddress.c | 61 ++++++++++++++++++++---------
1 file changed, 43 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..c107d0fb0e4 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,15 +4092,15 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+ Assert(objdesc.len > 0);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
ReleaseSysCache(tup);
break;
@@ -4109,6 +4112,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,9 +4131,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4137,6 +4147,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4161,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4175,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,9 +4194,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4189,6 +4210,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4224,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.47.3
----Next_Part(Thu_May_28_12_16_22_2026_214)--
Content-Type: Text/X-Patch; charset=us-ascii
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment;
filename="0002-Use-double-quotes-in-message.patch"
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH 1/4] Make propgraph object descriptions translatable
@ 2026-05-26 07:14 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-05-26 07:14 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
Build the whole object description from a single format string
instead.
---
src/backend/catalog/objectaddress.c | 61 ++++++++++++++++++++---------
1 file changed, 43 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..c107d0fb0e4 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,15 +4092,15 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+ Assert(objdesc.len > 0);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
ReleaseSysCache(tup);
break;
@@ -4109,6 +4112,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,9 +4131,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4137,6 +4147,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4161,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4175,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,9 +4194,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4189,6 +4210,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4224,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.47.3
----Next_Part(Thu_May_28_12_16_22_2026_214)--
Content-Type: Text/X-Patch; charset=us-ascii
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment;
filename="0002-Use-double-quotes-in-message.patch"
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH 1/4] Make propgraph object descriptions translatable
@ 2026-05-26 07:14 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-05-26 07:14 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
Build the whole object description from a single format string
instead.
---
src/backend/catalog/objectaddress.c | 61 ++++++++++++++++++++---------
1 file changed, 43 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..c107d0fb0e4 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,15 +4092,15 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+ Assert(objdesc.len > 0);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
ReleaseSysCache(tup);
break;
@@ -4109,6 +4112,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,9 +4131,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4137,6 +4147,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4161,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4175,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,9 +4194,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4189,6 +4210,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4224,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.47.3
----Next_Part(Thu_May_28_12_16_22_2026_214)--
Content-Type: Text/X-Patch; charset=us-ascii
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment;
filename="0002-Use-double-quotes-in-message.patch"
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH 1/4] Make propgraph object descriptions translatable
@ 2026-05-26 07:14 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-05-26 07:14 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
Build the whole object description from a single format string
instead.
---
src/backend/catalog/objectaddress.c | 61 ++++++++++++++++++++---------
1 file changed, 43 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..c107d0fb0e4 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,15 +4092,15 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+ Assert(objdesc.len > 0);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
ReleaseSysCache(tup);
break;
@@ -4109,6 +4112,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,9 +4131,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4137,6 +4147,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4161,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4175,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,9 +4194,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4189,6 +4210,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4224,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.47.3
----Next_Part(Thu_May_28_12_16_22_2026_214)--
Content-Type: Text/X-Patch; charset=us-ascii
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment;
filename="0002-Use-double-quotes-in-message.patch"
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH 1/4] Make propgraph object descriptions translatable
@ 2026-05-26 07:14 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-05-26 07:14 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
Build the whole object description from a single format string
instead.
---
src/backend/catalog/objectaddress.c | 61 ++++++++++++++++++++---------
1 file changed, 43 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..c107d0fb0e4 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,15 +4092,15 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+ Assert(objdesc.len > 0);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
ReleaseSysCache(tup);
break;
@@ -4109,6 +4112,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,9 +4131,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4137,6 +4147,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4161,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4175,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,9 +4194,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4189,6 +4210,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4224,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.47.3
----Next_Part(Thu_May_28_12_16_22_2026_214)--
Content-Type: Text/X-Patch; charset=us-ascii
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment;
filename="0002-Use-double-quotes-in-message.patch"
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH 1/4] Make propgraph object descriptions translatable
@ 2026-05-26 07:14 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-05-26 07:14 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
Build the whole object description from a single format string
instead.
---
src/backend/catalog/objectaddress.c | 61 ++++++++++++++++++++---------
1 file changed, 43 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..c107d0fb0e4 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,15 +4092,15 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+ Assert(objdesc.len > 0);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
ReleaseSysCache(tup);
break;
@@ -4109,6 +4112,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,9 +4131,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4137,6 +4147,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4161,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4175,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,9 +4194,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4189,6 +4210,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4224,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.47.3
----Next_Part(Thu_May_28_12_16_22_2026_214)--
Content-Type: Text/X-Patch; charset=us-ascii
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment;
filename="0002-Use-double-quotes-in-message.patch"
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH 1/4] Make propgraph object descriptions translatable
@ 2026-05-26 07:14 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-05-26 07:14 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
Build the whole object description from a single format string
instead.
---
src/backend/catalog/objectaddress.c | 61 ++++++++++++++++++++---------
1 file changed, 43 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..c107d0fb0e4 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,15 +4092,15 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+ Assert(objdesc.len > 0);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
ReleaseSysCache(tup);
break;
@@ -4109,6 +4112,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,9 +4131,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4137,6 +4147,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4161,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4175,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,9 +4194,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4189,6 +4210,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4224,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.47.3
----Next_Part(Thu_May_28_12_16_22_2026_214)--
Content-Type: Text/X-Patch; charset=us-ascii
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment;
filename="0002-Use-double-quotes-in-message.patch"
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH 1/4] Make propgraph object descriptions translatable
@ 2026-05-26 07:14 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-05-26 07:14 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
Build the whole object description from a single format string
instead.
---
src/backend/catalog/objectaddress.c | 61 ++++++++++++++++++++---------
1 file changed, 43 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..c107d0fb0e4 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,15 +4092,15 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+ Assert(objdesc.len > 0);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
ReleaseSysCache(tup);
break;
@@ -4109,6 +4112,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,9 +4131,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4137,6 +4147,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4161,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4175,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,9 +4194,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4189,6 +4210,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4224,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.47.3
----Next_Part(Thu_May_28_12_16_22_2026_214)--
Content-Type: Text/X-Patch; charset=us-ascii
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment;
filename="0002-Use-double-quotes-in-message.patch"
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH 1/4] Make propgraph object descriptions translatable
@ 2026-05-26 07:14 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-05-26 07:14 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
Build the whole object description from a single format string
instead.
---
src/backend/catalog/objectaddress.c | 61 ++++++++++++++++++++---------
1 file changed, 43 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..c107d0fb0e4 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,15 +4092,15 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+ Assert(objdesc.len > 0);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
ReleaseSysCache(tup);
break;
@@ -4109,6 +4112,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,9 +4131,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4137,6 +4147,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4161,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4175,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,9 +4194,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4189,6 +4210,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4224,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.47.3
----Next_Part(Thu_May_28_12_16_22_2026_214)--
Content-Type: Text/X-Patch; charset=us-ascii
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment;
filename="0002-Use-double-quotes-in-message.patch"
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH 1/4] Make propgraph object descriptions translatable
@ 2026-05-26 07:14 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-05-26 07:14 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
Build the whole object description from a single format string
instead.
---
src/backend/catalog/objectaddress.c | 61 ++++++++++++++++++++---------
1 file changed, 43 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..c107d0fb0e4 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,15 +4092,15 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+ Assert(objdesc.len > 0);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
ReleaseSysCache(tup);
break;
@@ -4109,6 +4112,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,9 +4131,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4137,6 +4147,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4161,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4175,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,9 +4194,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4189,6 +4210,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4224,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.47.3
----Next_Part(Thu_May_28_12_16_22_2026_214)--
Content-Type: Text/X-Patch; charset=us-ascii
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment;
filename="0002-Use-double-quotes-in-message.patch"
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH 1/4] Make propgraph object descriptions translatable
@ 2026-05-26 07:14 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-05-26 07:14 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
Build the whole object description from a single format string
instead.
---
src/backend/catalog/objectaddress.c | 61 ++++++++++++++++++++---------
1 file changed, 43 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..c107d0fb0e4 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,15 +4092,15 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+ Assert(objdesc.len > 0);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
ReleaseSysCache(tup);
break;
@@ -4109,6 +4112,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,9 +4131,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4137,6 +4147,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4161,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4175,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,9 +4194,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4189,6 +4210,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4224,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.47.3
----Next_Part(Thu_May_28_12_16_22_2026_214)--
Content-Type: Text/X-Patch; charset=us-ascii
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment;
filename="0002-Use-double-quotes-in-message.patch"
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH 1/4] Make propgraph object descriptions translatable
@ 2026-05-26 07:14 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-05-26 07:14 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
Build the whole object description from a single format string
instead.
---
src/backend/catalog/objectaddress.c | 61 ++++++++++++++++++++---------
1 file changed, 43 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..c107d0fb0e4 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,15 +4092,15 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+ Assert(objdesc.len > 0);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
ReleaseSysCache(tup);
break;
@@ -4109,6 +4112,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,9 +4131,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4137,6 +4147,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4161,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4175,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,9 +4194,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4189,6 +4210,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4224,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.47.3
----Next_Part(Thu_May_28_12_16_22_2026_214)--
Content-Type: Text/X-Patch; charset=us-ascii
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment;
filename="0002-Use-double-quotes-in-message.patch"
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH 1/4] Make propgraph object descriptions translatable
@ 2026-05-26 07:14 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-05-26 07:14 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
Build the whole object description from a single format string
instead.
---
src/backend/catalog/objectaddress.c | 61 ++++++++++++++++++++---------
1 file changed, 43 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..c107d0fb0e4 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,15 +4092,15 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+ Assert(objdesc.len > 0);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
ReleaseSysCache(tup);
break;
@@ -4109,6 +4112,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,9 +4131,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4137,6 +4147,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4161,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4175,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,9 +4194,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4189,6 +4210,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4224,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.47.3
----Next_Part(Thu_May_28_12_16_22_2026_214)--
Content-Type: Text/X-Patch; charset=us-ascii
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment;
filename="0002-Use-double-quotes-in-message.patch"
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH 1/4] Make propgraph object descriptions translatable
@ 2026-05-26 07:14 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-05-26 07:14 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
Build the whole object description from a single format string
instead.
---
src/backend/catalog/objectaddress.c | 61 ++++++++++++++++++++---------
1 file changed, 43 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..c107d0fb0e4 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,15 +4092,15 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+ Assert(objdesc.len > 0);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
ReleaseSysCache(tup);
break;
@@ -4109,6 +4112,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,9 +4131,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4137,6 +4147,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4161,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4175,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,9 +4194,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4189,6 +4210,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4224,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.47.3
----Next_Part(Thu_May_28_12_16_22_2026_214)--
Content-Type: Text/X-Patch; charset=us-ascii
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment;
filename="0002-Use-double-quotes-in-message.patch"
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH 1/4] Make propgraph object descriptions translatable
@ 2026-05-26 07:14 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-05-26 07:14 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
Build the whole object description from a single format string
instead.
---
src/backend/catalog/objectaddress.c | 61 ++++++++++++++++++++---------
1 file changed, 43 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..c107d0fb0e4 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,15 +4092,15 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+ Assert(objdesc.len > 0);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
ReleaseSysCache(tup);
break;
@@ -4109,6 +4112,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,9 +4131,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4137,6 +4147,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4161,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4175,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,9 +4194,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4189,6 +4210,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4224,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.47.3
----Next_Part(Thu_May_28_12_16_22_2026_214)--
Content-Type: Text/X-Patch; charset=us-ascii
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment;
filename="0002-Use-double-quotes-in-message.patch"
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH 1/4] Make propgraph object descriptions translatable
@ 2026-05-26 07:14 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-05-26 07:14 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
Build the whole object description from a single format string
instead.
---
src/backend/catalog/objectaddress.c | 61 ++++++++++++++++++++---------
1 file changed, 43 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..c107d0fb0e4 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,15 +4092,15 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+ Assert(objdesc.len > 0);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
ReleaseSysCache(tup);
break;
@@ -4109,6 +4112,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,9 +4131,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4137,6 +4147,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4161,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4175,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,9 +4194,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4189,6 +4210,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4224,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.47.3
----Next_Part(Thu_May_28_12_16_22_2026_214)--
Content-Type: Text/X-Patch; charset=us-ascii
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment;
filename="0002-Use-double-quotes-in-message.patch"
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH 1/4] Make propgraph object descriptions translatable
@ 2026-05-26 07:14 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-05-26 07:14 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
Build the whole object description from a single format string
instead.
---
src/backend/catalog/objectaddress.c | 61 ++++++++++++++++++++---------
1 file changed, 43 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..c107d0fb0e4 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,15 +4092,15 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+ Assert(objdesc.len > 0);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
ReleaseSysCache(tup);
break;
@@ -4109,6 +4112,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,9 +4131,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4137,6 +4147,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4161,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4175,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,9 +4194,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4189,6 +4210,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4224,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.47.3
----Next_Part(Thu_May_28_12_16_22_2026_214)--
Content-Type: Text/X-Patch; charset=us-ascii
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment;
filename="0002-Use-double-quotes-in-message.patch"
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH 1/4] Make propgraph object descriptions translatable
@ 2026-05-26 07:14 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-05-26 07:14 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
Build the whole object description from a single format string
instead.
---
src/backend/catalog/objectaddress.c | 61 ++++++++++++++++++++---------
1 file changed, 43 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..c107d0fb0e4 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,15 +4092,15 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+ Assert(objdesc.len > 0);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
ReleaseSysCache(tup);
break;
@@ -4109,6 +4112,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,9 +4131,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4137,6 +4147,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4161,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4175,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,9 +4194,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4189,6 +4210,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4224,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.47.3
----Next_Part(Thu_May_28_12_16_22_2026_214)--
Content-Type: Text/X-Patch; charset=us-ascii
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment;
filename="0002-Use-double-quotes-in-message.patch"
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH 1/4] Make propgraph object descriptions translatable
@ 2026-05-26 07:14 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-05-26 07:14 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
Build the whole object description from a single format string
instead.
---
src/backend/catalog/objectaddress.c | 61 ++++++++++++++++++++---------
1 file changed, 43 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..c107d0fb0e4 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,15 +4092,15 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+ Assert(objdesc.len > 0);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
ReleaseSysCache(tup);
break;
@@ -4109,6 +4112,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,9 +4131,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4137,6 +4147,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4161,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4175,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,9 +4194,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4189,6 +4210,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4224,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.47.3
----Next_Part(Thu_May_28_12_16_22_2026_214)--
Content-Type: Text/X-Patch; charset=us-ascii
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment;
filename="0002-Use-double-quotes-in-message.patch"
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH 1/4] Make propgraph object descriptions translatable
@ 2026-05-26 07:14 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-05-26 07:14 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
Build the whole object description from a single format string
instead.
---
src/backend/catalog/objectaddress.c | 61 ++++++++++++++++++++---------
1 file changed, 43 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..c107d0fb0e4 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,15 +4092,15 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+ Assert(objdesc.len > 0);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
ReleaseSysCache(tup);
break;
@@ -4109,6 +4112,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,9 +4131,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4137,6 +4147,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4161,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4175,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,9 +4194,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4189,6 +4210,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4224,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.47.3
----Next_Part(Thu_May_28_12_16_22_2026_214)--
Content-Type: Text/X-Patch; charset=us-ascii
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment;
filename="0002-Use-double-quotes-in-message.patch"
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH 1/4] Make propgraph object descriptions translatable
@ 2026-05-26 07:14 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-05-26 07:14 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
Build the whole object description from a single format string
instead.
---
src/backend/catalog/objectaddress.c | 61 ++++++++++++++++++++---------
1 file changed, 43 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..c107d0fb0e4 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,15 +4092,15 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+ Assert(objdesc.len > 0);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
ReleaseSysCache(tup);
break;
@@ -4109,6 +4112,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,9 +4131,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4137,6 +4147,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4161,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4175,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,9 +4194,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4189,6 +4210,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4224,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.47.3
----Next_Part(Thu_May_28_12_16_22_2026_214)--
Content-Type: Text/X-Patch; charset=us-ascii
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment;
filename="0002-Use-double-quotes-in-message.patch"
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH 1/4] Make propgraph object descriptions translatable
@ 2026-05-26 07:14 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-05-26 07:14 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
Build the whole object description from a single format string
instead.
---
src/backend/catalog/objectaddress.c | 61 ++++++++++++++++++++---------
1 file changed, 43 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..c107d0fb0e4 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,15 +4092,15 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+ Assert(objdesc.len > 0);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
ReleaseSysCache(tup);
break;
@@ -4109,6 +4112,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,9 +4131,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4137,6 +4147,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4161,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4175,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,9 +4194,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4189,6 +4210,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4224,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.47.3
----Next_Part(Thu_May_28_12_16_22_2026_214)--
Content-Type: Text/X-Patch; charset=us-ascii
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment;
filename="0002-Use-double-quotes-in-message.patch"
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH 1/4] Make propgraph object descriptions translatable
@ 2026-05-26 07:14 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-05-26 07:14 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
Build the whole object description from a single format string
instead.
---
src/backend/catalog/objectaddress.c | 61 ++++++++++++++++++++---------
1 file changed, 43 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..c107d0fb0e4 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,15 +4092,15 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+ Assert(objdesc.len > 0);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
ReleaseSysCache(tup);
break;
@@ -4109,6 +4112,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,9 +4131,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4137,6 +4147,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4161,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4175,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,9 +4194,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4189,6 +4210,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4224,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.47.3
----Next_Part(Thu_May_28_12_16_22_2026_214)--
Content-Type: Text/X-Patch; charset=us-ascii
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment;
filename="0002-Use-double-quotes-in-message.patch"
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH 1/4] Make propgraph object descriptions translatable
@ 2026-05-26 07:14 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-05-26 07:14 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
Build the whole object description from a single format string
instead.
---
src/backend/catalog/objectaddress.c | 61 ++++++++++++++++++++---------
1 file changed, 43 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..c107d0fb0e4 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,15 +4092,15 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+ Assert(objdesc.len > 0);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
ReleaseSysCache(tup);
break;
@@ -4109,6 +4112,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,9 +4131,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4137,6 +4147,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4161,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4175,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,9 +4194,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4189,6 +4210,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4224,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.47.3
----Next_Part(Thu_May_28_12_16_22_2026_214)--
Content-Type: Text/X-Patch; charset=us-ascii
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment;
filename="0002-Use-double-quotes-in-message.patch"
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH 1/4] Make propgraph object descriptions translatable
@ 2026-05-26 07:14 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-05-26 07:14 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
Build the whole object description from a single format string
instead.
---
src/backend/catalog/objectaddress.c | 61 ++++++++++++++++++++---------
1 file changed, 43 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..c107d0fb0e4 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,15 +4092,15 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+ Assert(objdesc.len > 0);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
ReleaseSysCache(tup);
break;
@@ -4109,6 +4112,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,9 +4131,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4137,6 +4147,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4161,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4175,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,9 +4194,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4189,6 +4210,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4224,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.47.3
----Next_Part(Thu_May_28_12_16_22_2026_214)--
Content-Type: Text/X-Patch; charset=us-ascii
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment;
filename="0002-Use-double-quotes-in-message.patch"
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH 1/4] Make propgraph object descriptions translatable
@ 2026-05-26 07:14 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-05-26 07:14 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
Build the whole object description from a single format string
instead.
---
src/backend/catalog/objectaddress.c | 61 ++++++++++++++++++++---------
1 file changed, 43 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..c107d0fb0e4 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,15 +4092,15 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+ Assert(objdesc.len > 0);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
ReleaseSysCache(tup);
break;
@@ -4109,6 +4112,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,9 +4131,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4137,6 +4147,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4161,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4175,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,9 +4194,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4189,6 +4210,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4224,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.47.3
----Next_Part(Thu_May_28_12_16_22_2026_214)--
Content-Type: Text/X-Patch; charset=us-ascii
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment;
filename="0002-Use-double-quotes-in-message.patch"
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH 1/4] Make propgraph object descriptions translatable
@ 2026-05-26 07:14 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-05-26 07:14 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
Build the whole object description from a single format string
instead.
---
src/backend/catalog/objectaddress.c | 61 ++++++++++++++++++++---------
1 file changed, 43 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..c107d0fb0e4 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,15 +4092,15 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+ Assert(objdesc.len > 0);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
ReleaseSysCache(tup);
break;
@@ -4109,6 +4112,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,9 +4131,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4137,6 +4147,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4161,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4175,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,9 +4194,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4189,6 +4210,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4224,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.47.3
----Next_Part(Thu_May_28_12_16_22_2026_214)--
Content-Type: Text/X-Patch; charset=us-ascii
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment;
filename="0002-Use-double-quotes-in-message.patch"
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH 1/4] Make propgraph object descriptions translatable
@ 2026-05-26 07:14 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-05-26 07:14 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
Build the whole object description from a single format string
instead.
---
src/backend/catalog/objectaddress.c | 61 ++++++++++++++++++++---------
1 file changed, 43 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..c107d0fb0e4 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,15 +4092,15 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+ Assert(objdesc.len > 0);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
ReleaseSysCache(tup);
break;
@@ -4109,6 +4112,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,9 +4131,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4137,6 +4147,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4161,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4175,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,9 +4194,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4189,6 +4210,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4224,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.47.3
----Next_Part(Thu_May_28_12_16_22_2026_214)--
Content-Type: Text/X-Patch; charset=us-ascii
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment;
filename="0002-Use-double-quotes-in-message.patch"
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH 1/4] Make propgraph object descriptions translatable
@ 2026-05-26 07:14 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-05-26 07:14 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
Build the whole object description from a single format string
instead.
---
src/backend/catalog/objectaddress.c | 61 ++++++++++++++++++++---------
1 file changed, 43 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..c107d0fb0e4 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,15 +4092,15 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+ Assert(objdesc.len > 0);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
ReleaseSysCache(tup);
break;
@@ -4109,6 +4112,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,9 +4131,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4137,6 +4147,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4161,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4175,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,9 +4194,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4189,6 +4210,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4224,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.47.3
----Next_Part(Thu_May_28_12_16_22_2026_214)--
Content-Type: Text/X-Patch; charset=us-ascii
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment;
filename="0002-Use-double-quotes-in-message.patch"
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH 1/4] Make propgraph object descriptions translatable
@ 2026-05-26 07:14 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-05-26 07:14 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
Build the whole object description from a single format string
instead.
---
src/backend/catalog/objectaddress.c | 61 ++++++++++++++++++++---------
1 file changed, 43 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..c107d0fb0e4 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,15 +4092,15 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+ Assert(objdesc.len > 0);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
ReleaseSysCache(tup);
break;
@@ -4109,6 +4112,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,9 +4131,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4137,6 +4147,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4161,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4175,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,9 +4194,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4189,6 +4210,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4224,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.47.3
----Next_Part(Thu_May_28_12_16_22_2026_214)--
Content-Type: Text/X-Patch; charset=us-ascii
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment;
filename="0002-Use-double-quotes-in-message.patch"
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH 1/4] Make propgraph object descriptions translatable
@ 2026-05-26 07:14 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-05-26 07:14 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
Build the whole object description from a single format string
instead.
---
src/backend/catalog/objectaddress.c | 61 ++++++++++++++++++++---------
1 file changed, 43 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..c107d0fb0e4 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,15 +4092,15 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+ Assert(objdesc.len > 0);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
ReleaseSysCache(tup);
break;
@@ -4109,6 +4112,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,9 +4131,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4137,6 +4147,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4161,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4175,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,9 +4194,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4189,6 +4210,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4224,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.47.3
----Next_Part(Thu_May_28_12_16_22_2026_214)--
Content-Type: Text/X-Patch; charset=us-ascii
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment;
filename="0002-Use-double-quotes-in-message.patch"
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH 1/4] Make propgraph object descriptions translatable
@ 2026-05-26 07:14 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-05-26 07:14 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
Build the whole object description from a single format string
instead.
---
src/backend/catalog/objectaddress.c | 61 ++++++++++++++++++++---------
1 file changed, 43 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..c107d0fb0e4 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,15 +4092,15 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+ Assert(objdesc.len > 0);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
ReleaseSysCache(tup);
break;
@@ -4109,6 +4112,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,9 +4131,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4137,6 +4147,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4161,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4175,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,9 +4194,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4189,6 +4210,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4224,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.47.3
----Next_Part(Thu_May_28_12_16_22_2026_214)--
Content-Type: Text/X-Patch; charset=us-ascii
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment;
filename="0002-Use-double-quotes-in-message.patch"
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH 1/4] Make propgraph object descriptions translatable
@ 2026-05-26 07:14 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-05-26 07:14 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
Build the whole object description from a single format string
instead.
---
src/backend/catalog/objectaddress.c | 61 ++++++++++++++++++++---------
1 file changed, 43 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..c107d0fb0e4 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,15 +4092,15 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+ Assert(objdesc.len > 0);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
ReleaseSysCache(tup);
break;
@@ -4109,6 +4112,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,9 +4131,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4137,6 +4147,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4161,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4175,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,9 +4194,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4189,6 +4210,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4224,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.47.3
----Next_Part(Thu_May_28_12_16_22_2026_214)--
Content-Type: Text/X-Patch; charset=us-ascii
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment;
filename="0002-Use-double-quotes-in-message.patch"
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH 1/4] Make propgraph object descriptions translatable
@ 2026-05-26 07:14 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-05-26 07:14 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
Build the whole object description from a single format string
instead.
---
src/backend/catalog/objectaddress.c | 61 ++++++++++++++++++++---------
1 file changed, 43 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..c107d0fb0e4 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,15 +4092,15 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+ Assert(objdesc.len > 0);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
ReleaseSysCache(tup);
break;
@@ -4109,6 +4112,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,9 +4131,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4137,6 +4147,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4161,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4175,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,9 +4194,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4189,6 +4210,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4224,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.47.3
----Next_Part(Thu_May_28_12_16_22_2026_214)--
Content-Type: Text/X-Patch; charset=us-ascii
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment;
filename="0002-Use-double-quotes-in-message.patch"
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH 1/4] Make propgraph object descriptions translatable
@ 2026-05-26 07:14 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-05-26 07:14 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
Build the whole object description from a single format string
instead.
---
src/backend/catalog/objectaddress.c | 61 ++++++++++++++++++++---------
1 file changed, 43 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..c107d0fb0e4 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,15 +4092,15 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+ Assert(objdesc.len > 0);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
ReleaseSysCache(tup);
break;
@@ -4109,6 +4112,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,9 +4131,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4137,6 +4147,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4161,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4175,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,9 +4194,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4189,6 +4210,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4224,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.47.3
----Next_Part(Thu_May_28_12_16_22_2026_214)--
Content-Type: Text/X-Patch; charset=us-ascii
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment;
filename="0002-Use-double-quotes-in-message.patch"
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH 1/4] Make propgraph object descriptions translatable
@ 2026-05-26 07:14 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-05-26 07:14 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
Build the whole object description from a single format string
instead.
---
src/backend/catalog/objectaddress.c | 61 ++++++++++++++++++++---------
1 file changed, 43 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..c107d0fb0e4 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,15 +4092,15 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+ Assert(objdesc.len > 0);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
ReleaseSysCache(tup);
break;
@@ -4109,6 +4112,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,9 +4131,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4137,6 +4147,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4161,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4175,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,9 +4194,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4189,6 +4210,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4224,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.47.3
----Next_Part(Thu_May_28_12_16_22_2026_214)--
Content-Type: Text/X-Patch; charset=us-ascii
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment;
filename="0002-Use-double-quotes-in-message.patch"
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH 1/4] Make propgraph object descriptions translatable
@ 2026-05-26 07:14 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-05-26 07:14 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
Build the whole object description from a single format string
instead.
---
src/backend/catalog/objectaddress.c | 61 ++++++++++++++++++++---------
1 file changed, 43 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..c107d0fb0e4 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,15 +4092,15 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+ Assert(objdesc.len > 0);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
ReleaseSysCache(tup);
break;
@@ -4109,6 +4112,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,9 +4131,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4137,6 +4147,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4161,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4175,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,9 +4194,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4189,6 +4210,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4224,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.47.3
----Next_Part(Thu_May_28_12_16_22_2026_214)--
Content-Type: Text/X-Patch; charset=us-ascii
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment;
filename="0002-Use-double-quotes-in-message.patch"
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH 1/4] Make propgraph object descriptions translatable
@ 2026-05-26 07:14 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-05-26 07:14 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
Build the whole object description from a single format string
instead.
---
src/backend/catalog/objectaddress.c | 61 ++++++++++++++++++++---------
1 file changed, 43 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..c107d0fb0e4 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,15 +4092,15 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+ Assert(objdesc.len > 0);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
ReleaseSysCache(tup);
break;
@@ -4109,6 +4112,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,9 +4131,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4137,6 +4147,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4161,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4175,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,9 +4194,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4189,6 +4210,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4224,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.47.3
----Next_Part(Thu_May_28_12_16_22_2026_214)--
Content-Type: Text/X-Patch; charset=us-ascii
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment;
filename="0002-Use-double-quotes-in-message.patch"
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH 1/4] Make propgraph object descriptions translatable
@ 2026-05-26 07:14 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-05-26 07:14 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
Build the whole object description from a single format string
instead.
---
src/backend/catalog/objectaddress.c | 61 ++++++++++++++++++++---------
1 file changed, 43 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..c107d0fb0e4 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,15 +4092,15 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+ Assert(objdesc.len > 0);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
ReleaseSysCache(tup);
break;
@@ -4109,6 +4112,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,9 +4131,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4137,6 +4147,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4161,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4175,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,9 +4194,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4189,6 +4210,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4224,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.47.3
----Next_Part(Thu_May_28_12_16_22_2026_214)--
Content-Type: Text/X-Patch; charset=us-ascii
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment;
filename="0002-Use-double-quotes-in-message.patch"
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH 1/4] Make propgraph object descriptions translatable
@ 2026-05-26 07:14 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-05-26 07:14 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
Build the whole object description from a single format string
instead.
---
src/backend/catalog/objectaddress.c | 61 ++++++++++++++++++++---------
1 file changed, 43 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..c107d0fb0e4 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,15 +4092,15 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+ Assert(objdesc.len > 0);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
ReleaseSysCache(tup);
break;
@@ -4109,6 +4112,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,9 +4131,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4137,6 +4147,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4161,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4175,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,9 +4194,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4189,6 +4210,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4224,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.47.3
----Next_Part(Thu_May_28_12_16_22_2026_214)--
Content-Type: Text/X-Patch; charset=us-ascii
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment;
filename="0002-Use-double-quotes-in-message.patch"
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH 1/4] Make propgraph object descriptions translatable
@ 2026-05-26 07:14 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-05-26 07:14 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
Build the whole object description from a single format string
instead.
---
src/backend/catalog/objectaddress.c | 61 ++++++++++++++++++++---------
1 file changed, 43 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..c107d0fb0e4 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,15 +4092,15 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+ Assert(objdesc.len > 0);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
ReleaseSysCache(tup);
break;
@@ -4109,6 +4112,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,9 +4131,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4137,6 +4147,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4161,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4175,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,9 +4194,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4189,6 +4210,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4224,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.47.3
----Next_Part(Thu_May_28_12_16_22_2026_214)--
Content-Type: Text/X-Patch; charset=us-ascii
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment;
filename="0002-Use-double-quotes-in-message.patch"
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH 1/4] Make propgraph object descriptions translatable
@ 2026-05-26 07:14 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-05-26 07:14 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
Build the whole object description from a single format string
instead.
---
src/backend/catalog/objectaddress.c | 61 ++++++++++++++++++++---------
1 file changed, 43 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..c107d0fb0e4 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,15 +4092,15 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+ Assert(objdesc.len > 0);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
ReleaseSysCache(tup);
break;
@@ -4109,6 +4112,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,9 +4131,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4137,6 +4147,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4161,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4175,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,9 +4194,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4189,6 +4210,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4224,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.47.3
----Next_Part(Thu_May_28_12_16_22_2026_214)--
Content-Type: Text/X-Patch; charset=us-ascii
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment;
filename="0002-Use-double-quotes-in-message.patch"
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH 1/4] Make propgraph object descriptions translatable
@ 2026-05-26 07:14 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-05-26 07:14 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
Build the whole object description from a single format string
instead.
---
src/backend/catalog/objectaddress.c | 61 ++++++++++++++++++++---------
1 file changed, 43 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..c107d0fb0e4 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,15 +4092,15 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+ Assert(objdesc.len > 0);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
ReleaseSysCache(tup);
break;
@@ -4109,6 +4112,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,9 +4131,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4137,6 +4147,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4161,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4175,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,9 +4194,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4189,6 +4210,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4224,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.47.3
----Next_Part(Thu_May_28_12_16_22_2026_214)--
Content-Type: Text/X-Patch; charset=us-ascii
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment;
filename="0002-Use-double-quotes-in-message.patch"
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH 1/4] Make propgraph object descriptions translatable
@ 2026-05-26 07:14 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-05-26 07:14 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
Build the whole object description from a single format string
instead.
---
src/backend/catalog/objectaddress.c | 61 ++++++++++++++++++++---------
1 file changed, 43 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..c107d0fb0e4 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,15 +4092,15 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+ Assert(objdesc.len > 0);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
ReleaseSysCache(tup);
break;
@@ -4109,6 +4112,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,9 +4131,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4137,6 +4147,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4161,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4175,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,9 +4194,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4189,6 +4210,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4224,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.47.3
----Next_Part(Thu_May_28_12_16_22_2026_214)--
Content-Type: Text/X-Patch; charset=us-ascii
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment;
filename="0002-Use-double-quotes-in-message.patch"
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH 1/4] Make propgraph object descriptions translatable
@ 2026-05-26 07:14 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-05-26 07:14 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
Build the whole object description from a single format string
instead.
---
src/backend/catalog/objectaddress.c | 61 ++++++++++++++++++++---------
1 file changed, 43 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..c107d0fb0e4 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,15 +4092,15 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+ Assert(objdesc.len > 0);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
ReleaseSysCache(tup);
break;
@@ -4109,6 +4112,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,9 +4131,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4137,6 +4147,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4161,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4175,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,9 +4194,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4189,6 +4210,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4224,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.47.3
----Next_Part(Thu_May_28_12_16_22_2026_214)--
Content-Type: Text/X-Patch; charset=us-ascii
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment;
filename="0002-Use-double-quotes-in-message.patch"
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH 1/4] Make propgraph object descriptions translatable
@ 2026-05-26 07:14 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-05-26 07:14 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
Build the whole object description from a single format string
instead.
---
src/backend/catalog/objectaddress.c | 61 ++++++++++++++++++++---------
1 file changed, 43 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..c107d0fb0e4 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,15 +4092,15 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+ Assert(objdesc.len > 0);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
ReleaseSysCache(tup);
break;
@@ -4109,6 +4112,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,9 +4131,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4137,6 +4147,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4161,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4175,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,9 +4194,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4189,6 +4210,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4224,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.47.3
----Next_Part(Thu_May_28_12_16_22_2026_214)--
Content-Type: Text/X-Patch; charset=us-ascii
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment;
filename="0002-Use-double-quotes-in-message.patch"
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH 1/4] Make propgraph object descriptions translatable
@ 2026-05-26 07:14 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-05-26 07:14 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
Build the whole object description from a single format string
instead.
---
src/backend/catalog/objectaddress.c | 61 ++++++++++++++++++++---------
1 file changed, 43 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..c107d0fb0e4 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,15 +4092,15 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+ Assert(objdesc.len > 0);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
ReleaseSysCache(tup);
break;
@@ -4109,6 +4112,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,9 +4131,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4137,6 +4147,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4161,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4175,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,9 +4194,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4189,6 +4210,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4224,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.47.3
----Next_Part(Thu_May_28_12_16_22_2026_214)--
Content-Type: Text/X-Patch; charset=us-ascii
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment;
filename="0002-Use-double-quotes-in-message.patch"
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH 1/4] Make propgraph object descriptions translatable
@ 2026-05-26 07:14 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-05-26 07:14 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
Build the whole object description from a single format string
instead.
---
src/backend/catalog/objectaddress.c | 61 ++++++++++++++++++++---------
1 file changed, 43 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..c107d0fb0e4 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,15 +4092,15 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+ Assert(objdesc.len > 0);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
ReleaseSysCache(tup);
break;
@@ -4109,6 +4112,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,9 +4131,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4137,6 +4147,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4161,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4175,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,9 +4194,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4189,6 +4210,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4224,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.47.3
----Next_Part(Thu_May_28_12_16_22_2026_214)--
Content-Type: Text/X-Patch; charset=us-ascii
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment;
filename="0002-Use-double-quotes-in-message.patch"
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH 1/4] Make propgraph object descriptions translatable
@ 2026-05-26 07:14 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-05-26 07:14 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
Build the whole object description from a single format string
instead.
---
src/backend/catalog/objectaddress.c | 61 ++++++++++++++++++++---------
1 file changed, 43 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..c107d0fb0e4 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,15 +4092,15 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+ Assert(objdesc.len > 0);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
ReleaseSysCache(tup);
break;
@@ -4109,6 +4112,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,9 +4131,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4137,6 +4147,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4161,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4175,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,9 +4194,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4189,6 +4210,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4224,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.47.3
----Next_Part(Thu_May_28_12_16_22_2026_214)--
Content-Type: Text/X-Patch; charset=us-ascii
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment;
filename="0002-Use-double-quotes-in-message.patch"
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH 1/4] Make propgraph object descriptions translatable
@ 2026-05-26 07:14 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-05-26 07:14 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
Build the whole object description from a single format string
instead.
---
src/backend/catalog/objectaddress.c | 61 ++++++++++++++++++++---------
1 file changed, 43 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..c107d0fb0e4 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,15 +4092,15 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+ Assert(objdesc.len > 0);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
ReleaseSysCache(tup);
break;
@@ -4109,6 +4112,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,9 +4131,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4137,6 +4147,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4161,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4175,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,9 +4194,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ appendStringInfoString(&objdesc,
+ getObjectDescription(&oa, false));
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc.data);
table_close(rel, AccessShareLock);
break;
@@ -4189,6 +4210,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4224,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+ Assert(objdesc.len > 0);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.47.3
----Next_Part(Thu_May_28_12_16_22_2026_214)--
Content-Type: Text/X-Patch; charset=us-ascii
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment;
filename="0002-Use-double-quotes-in-message.patch"
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH v2] Make propgraph object descriptions translatable
@ 2026-06-02 03:07 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-06-02 03:07 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
---
src/backend/catalog/objectaddress.c | 56 +++++++++++++++++++----------
1 file changed, 38 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..9eb574f5ccc 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,16 +4092,16 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tup);
break;
}
@@ -4109,6 +4112,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,10 +4129,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4137,6 +4144,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4158,11 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
+
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4173,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,10 +4190,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4189,6 +4205,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4219,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.52.0
----Next_Part(Tue_Jun__2_13_43_56_2026_572)----
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH v2] Make propgraph object descriptions translatable
@ 2026-06-02 03:07 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-06-02 03:07 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
---
src/backend/catalog/objectaddress.c | 56 +++++++++++++++++++----------
1 file changed, 38 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..9eb574f5ccc 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,16 +4092,16 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tup);
break;
}
@@ -4109,6 +4112,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,10 +4129,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4137,6 +4144,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4158,11 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
+
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4173,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,10 +4190,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4189,6 +4205,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4219,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.52.0
----Next_Part(Tue_Jun__2_13_43_56_2026_572)----
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH v2] Make propgraph object descriptions translatable
@ 2026-06-02 03:07 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-06-02 03:07 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
---
src/backend/catalog/objectaddress.c | 56 +++++++++++++++++++----------
1 file changed, 38 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..9eb574f5ccc 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,16 +4092,16 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tup);
break;
}
@@ -4109,6 +4112,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,10 +4129,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4137,6 +4144,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4158,11 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
+
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4173,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,10 +4190,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4189,6 +4205,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4219,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.52.0
----Next_Part(Tue_Jun__2_13_43_56_2026_572)----
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH v2] Make propgraph object descriptions translatable
@ 2026-06-02 03:07 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-06-02 03:07 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
---
src/backend/catalog/objectaddress.c | 56 +++++++++++++++++++----------
1 file changed, 38 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..9eb574f5ccc 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,16 +4092,16 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tup);
break;
}
@@ -4109,6 +4112,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,10 +4129,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4137,6 +4144,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4158,11 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
+
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4173,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,10 +4190,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4189,6 +4205,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4219,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.52.0
----Next_Part(Tue_Jun__2_13_43_56_2026_572)----
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH v2] Make propgraph object descriptions translatable
@ 2026-06-02 03:07 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-06-02 03:07 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
---
src/backend/catalog/objectaddress.c | 56 +++++++++++++++++++----------
1 file changed, 38 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..9eb574f5ccc 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,16 +4092,16 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tup);
break;
}
@@ -4109,6 +4112,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,10 +4129,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4137,6 +4144,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4158,11 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
+
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4173,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,10 +4190,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4189,6 +4205,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4219,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.52.0
----Next_Part(Tue_Jun__2_13_43_56_2026_572)----
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH v2] Make propgraph object descriptions translatable
@ 2026-06-02 03:07 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-06-02 03:07 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
---
src/backend/catalog/objectaddress.c | 56 +++++++++++++++++++----------
1 file changed, 38 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..9eb574f5ccc 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,16 +4092,16 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tup);
break;
}
@@ -4109,6 +4112,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,10 +4129,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4137,6 +4144,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4158,11 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
+
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4173,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,10 +4190,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4189,6 +4205,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4219,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.52.0
----Next_Part(Tue_Jun__2_13_43_56_2026_572)----
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH v2] Make propgraph object descriptions translatable
@ 2026-06-02 03:07 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-06-02 03:07 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
---
src/backend/catalog/objectaddress.c | 56 +++++++++++++++++++----------
1 file changed, 38 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..9eb574f5ccc 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,16 +4092,16 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tup);
break;
}
@@ -4109,6 +4112,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,10 +4129,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4137,6 +4144,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4158,11 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
+
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4173,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,10 +4190,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4189,6 +4205,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4219,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.52.0
----Next_Part(Tue_Jun__2_13_43_56_2026_572)----
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH v2] Make propgraph object descriptions translatable
@ 2026-06-02 03:07 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-06-02 03:07 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
---
src/backend/catalog/objectaddress.c | 56 +++++++++++++++++++----------
1 file changed, 38 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..9eb574f5ccc 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,16 +4092,16 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tup);
break;
}
@@ -4109,6 +4112,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,10 +4129,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4137,6 +4144,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4158,11 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
+
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4173,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,10 +4190,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4189,6 +4205,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4219,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.52.0
----Next_Part(Tue_Jun__2_13_43_56_2026_572)----
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH v2] Make propgraph object descriptions translatable
@ 2026-06-02 03:07 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-06-02 03:07 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
---
src/backend/catalog/objectaddress.c | 56 +++++++++++++++++++----------
1 file changed, 38 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..9eb574f5ccc 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,16 +4092,16 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tup);
break;
}
@@ -4109,6 +4112,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,10 +4129,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4137,6 +4144,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4158,11 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
+
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4173,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,10 +4190,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4189,6 +4205,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4219,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.52.0
----Next_Part(Tue_Jun__2_13_43_56_2026_572)----
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH v2] Make propgraph object descriptions translatable
@ 2026-06-02 03:07 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-06-02 03:07 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
---
src/backend/catalog/objectaddress.c | 56 +++++++++++++++++++----------
1 file changed, 38 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..9eb574f5ccc 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,16 +4092,16 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tup);
break;
}
@@ -4109,6 +4112,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,10 +4129,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4137,6 +4144,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4158,11 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
+
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4173,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,10 +4190,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4189,6 +4205,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4219,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.52.0
----Next_Part(Tue_Jun__2_13_43_56_2026_572)----
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH v2] Make propgraph object descriptions translatable
@ 2026-06-02 03:07 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-06-02 03:07 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
---
src/backend/catalog/objectaddress.c | 56 +++++++++++++++++++----------
1 file changed, 38 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..9eb574f5ccc 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,16 +4092,16 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tup);
break;
}
@@ -4109,6 +4112,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,10 +4129,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4137,6 +4144,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4158,11 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
+
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4173,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,10 +4190,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4189,6 +4205,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4219,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.52.0
----Next_Part(Tue_Jun__2_13_43_56_2026_572)----
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH v2] Make propgraph object descriptions translatable
@ 2026-06-02 03:07 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-06-02 03:07 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
---
src/backend/catalog/objectaddress.c | 56 +++++++++++++++++++----------
1 file changed, 38 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..9eb574f5ccc 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,16 +4092,16 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tup);
break;
}
@@ -4109,6 +4112,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,10 +4129,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4137,6 +4144,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4158,11 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
+
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4173,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,10 +4190,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4189,6 +4205,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4219,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.52.0
----Next_Part(Tue_Jun__2_13_43_56_2026_572)----
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH v2] Make propgraph object descriptions translatable
@ 2026-06-02 03:07 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-06-02 03:07 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
---
src/backend/catalog/objectaddress.c | 56 +++++++++++++++++++----------
1 file changed, 38 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..9eb574f5ccc 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,16 +4092,16 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tup);
break;
}
@@ -4109,6 +4112,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,10 +4129,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4137,6 +4144,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4158,11 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
+
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4173,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,10 +4190,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4189,6 +4205,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4219,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.52.0
----Next_Part(Tue_Jun__2_13_43_56_2026_572)----
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH v2] Make propgraph object descriptions translatable
@ 2026-06-02 03:07 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-06-02 03:07 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
---
src/backend/catalog/objectaddress.c | 56 +++++++++++++++++++----------
1 file changed, 38 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..9eb574f5ccc 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,16 +4092,16 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tup);
break;
}
@@ -4109,6 +4112,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,10 +4129,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4137,6 +4144,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4158,11 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
+
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4173,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,10 +4190,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4189,6 +4205,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4219,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.52.0
----Next_Part(Tue_Jun__2_13_43_56_2026_572)----
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH v2] Make propgraph object descriptions translatable
@ 2026-06-02 03:07 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-06-02 03:07 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
---
src/backend/catalog/objectaddress.c | 56 +++++++++++++++++++----------
1 file changed, 38 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..9eb574f5ccc 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,16 +4092,16 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tup);
break;
}
@@ -4109,6 +4112,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,10 +4129,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4137,6 +4144,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4158,11 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
+
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4173,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,10 +4190,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4189,6 +4205,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4219,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.52.0
----Next_Part(Tue_Jun__2_13_43_56_2026_572)----
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH v2] Make propgraph object descriptions translatable
@ 2026-06-02 03:07 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-06-02 03:07 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
---
src/backend/catalog/objectaddress.c | 56 +++++++++++++++++++----------
1 file changed, 38 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..9eb574f5ccc 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,16 +4092,16 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tup);
break;
}
@@ -4109,6 +4112,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,10 +4129,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4137,6 +4144,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4158,11 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
+
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4173,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,10 +4190,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4189,6 +4205,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4219,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.52.0
----Next_Part(Tue_Jun__2_13_43_56_2026_572)----
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH v2] Make propgraph object descriptions translatable
@ 2026-06-02 03:07 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-06-02 03:07 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
---
src/backend/catalog/objectaddress.c | 56 +++++++++++++++++++----------
1 file changed, 38 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..9eb574f5ccc 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,16 +4092,16 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tup);
break;
}
@@ -4109,6 +4112,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,10 +4129,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4137,6 +4144,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4158,11 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
+
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4173,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,10 +4190,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4189,6 +4205,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4219,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.52.0
----Next_Part(Tue_Jun__2_13_43_56_2026_572)----
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH v2] Make propgraph object descriptions translatable
@ 2026-06-02 03:07 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-06-02 03:07 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
---
src/backend/catalog/objectaddress.c | 56 +++++++++++++++++++----------
1 file changed, 38 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..9eb574f5ccc 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,16 +4092,16 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tup);
break;
}
@@ -4109,6 +4112,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,10 +4129,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4137,6 +4144,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4158,11 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
+
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4173,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,10 +4190,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4189,6 +4205,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4219,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.52.0
----Next_Part(Tue_Jun__2_13_43_56_2026_572)----
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH v2] Make propgraph object descriptions translatable
@ 2026-06-02 03:07 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-06-02 03:07 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
---
src/backend/catalog/objectaddress.c | 56 +++++++++++++++++++----------
1 file changed, 38 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..9eb574f5ccc 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,16 +4092,16 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tup);
break;
}
@@ -4109,6 +4112,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,10 +4129,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4137,6 +4144,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4158,11 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
+
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4173,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,10 +4190,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4189,6 +4205,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4219,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.52.0
----Next_Part(Tue_Jun__2_13_43_56_2026_572)----
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH v2] Make propgraph object descriptions translatable
@ 2026-06-02 03:07 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-06-02 03:07 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
---
src/backend/catalog/objectaddress.c | 56 +++++++++++++++++++----------
1 file changed, 38 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..9eb574f5ccc 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,16 +4092,16 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tup);
break;
}
@@ -4109,6 +4112,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,10 +4129,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4137,6 +4144,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4158,11 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
+
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4173,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,10 +4190,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4189,6 +4205,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4219,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.52.0
----Next_Part(Tue_Jun__2_13_43_56_2026_572)----
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH v2] Make propgraph object descriptions translatable
@ 2026-06-02 03:07 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-06-02 03:07 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
---
src/backend/catalog/objectaddress.c | 56 +++++++++++++++++++----------
1 file changed, 38 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..9eb574f5ccc 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,16 +4092,16 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tup);
break;
}
@@ -4109,6 +4112,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,10 +4129,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4137,6 +4144,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4158,11 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
+
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4173,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,10 +4190,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4189,6 +4205,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4219,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.52.0
----Next_Part(Tue_Jun__2_13_43_56_2026_572)----
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH v2] Make propgraph object descriptions translatable
@ 2026-06-02 03:07 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-06-02 03:07 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
---
src/backend/catalog/objectaddress.c | 56 +++++++++++++++++++----------
1 file changed, 38 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..9eb574f5ccc 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,16 +4092,16 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tup);
break;
}
@@ -4109,6 +4112,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,10 +4129,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4137,6 +4144,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4158,11 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
+
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4173,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,10 +4190,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4189,6 +4205,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4219,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.52.0
----Next_Part(Tue_Jun__2_13_43_56_2026_572)----
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH v2] Make propgraph object descriptions translatable
@ 2026-06-02 03:07 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-06-02 03:07 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
---
src/backend/catalog/objectaddress.c | 56 +++++++++++++++++++----------
1 file changed, 38 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..9eb574f5ccc 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,16 +4092,16 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tup);
break;
}
@@ -4109,6 +4112,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,10 +4129,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4137,6 +4144,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4158,11 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
+
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4173,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,10 +4190,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4189,6 +4205,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4219,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.52.0
----Next_Part(Tue_Jun__2_13_43_56_2026_572)----
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH v2] Make propgraph object descriptions translatable
@ 2026-06-02 03:07 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-06-02 03:07 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
---
src/backend/catalog/objectaddress.c | 56 +++++++++++++++++++----------
1 file changed, 38 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..9eb574f5ccc 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,16 +4092,16 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tup);
break;
}
@@ -4109,6 +4112,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,10 +4129,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4137,6 +4144,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4158,11 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
+
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4173,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,10 +4190,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4189,6 +4205,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4219,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.52.0
----Next_Part(Tue_Jun__2_13_43_56_2026_572)----
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH v2] Make propgraph object descriptions translatable
@ 2026-06-02 03:07 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-06-02 03:07 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
---
src/backend/catalog/objectaddress.c | 56 +++++++++++++++++++----------
1 file changed, 38 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..9eb574f5ccc 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,16 +4092,16 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tup);
break;
}
@@ -4109,6 +4112,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,10 +4129,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4137,6 +4144,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4158,11 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
+
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4173,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,10 +4190,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4189,6 +4205,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4219,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.52.0
----Next_Part(Tue_Jun__2_13_43_56_2026_572)----
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH v2] Make propgraph object descriptions translatable
@ 2026-06-02 03:07 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-06-02 03:07 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
---
src/backend/catalog/objectaddress.c | 56 +++++++++++++++++++----------
1 file changed, 38 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..9eb574f5ccc 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,16 +4092,16 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tup);
break;
}
@@ -4109,6 +4112,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,10 +4129,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4137,6 +4144,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4158,11 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
+
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4173,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,10 +4190,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4189,6 +4205,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4219,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.52.0
----Next_Part(Tue_Jun__2_13_43_56_2026_572)----
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH v2] Make propgraph object descriptions translatable
@ 2026-06-02 03:07 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-06-02 03:07 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
---
src/backend/catalog/objectaddress.c | 56 +++++++++++++++++++----------
1 file changed, 38 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..9eb574f5ccc 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,16 +4092,16 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tup);
break;
}
@@ -4109,6 +4112,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,10 +4129,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4137,6 +4144,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4158,11 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
+
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4173,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,10 +4190,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4189,6 +4205,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4219,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.52.0
----Next_Part(Tue_Jun__2_13_43_56_2026_572)----
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH v2] Make propgraph object descriptions translatable
@ 2026-06-02 03:07 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-06-02 03:07 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
---
src/backend/catalog/objectaddress.c | 56 +++++++++++++++++++----------
1 file changed, 38 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..9eb574f5ccc 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,16 +4092,16 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tup);
break;
}
@@ -4109,6 +4112,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,10 +4129,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4137,6 +4144,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4158,11 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
+
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4173,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,10 +4190,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4189,6 +4205,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4219,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.52.0
----Next_Part(Tue_Jun__2_13_43_56_2026_572)----
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH v2] Make propgraph object descriptions translatable
@ 2026-06-02 03:07 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-06-02 03:07 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
---
src/backend/catalog/objectaddress.c | 56 +++++++++++++++++++----------
1 file changed, 38 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..9eb574f5ccc 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,16 +4092,16 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tup);
break;
}
@@ -4109,6 +4112,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,10 +4129,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4137,6 +4144,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4158,11 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
+
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4173,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,10 +4190,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4189,6 +4205,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4219,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.52.0
----Next_Part(Tue_Jun__2_13_43_56_2026_572)----
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH v2] Make propgraph object descriptions translatable
@ 2026-06-02 03:07 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-06-02 03:07 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
---
src/backend/catalog/objectaddress.c | 56 +++++++++++++++++++----------
1 file changed, 38 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..9eb574f5ccc 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,16 +4092,16 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tup);
break;
}
@@ -4109,6 +4112,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,10 +4129,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4137,6 +4144,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4158,11 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
+
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4173,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,10 +4190,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4189,6 +4205,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4219,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.52.0
----Next_Part(Tue_Jun__2_13_43_56_2026_572)----
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH v2] Make propgraph object descriptions translatable
@ 2026-06-02 03:07 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-06-02 03:07 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
---
src/backend/catalog/objectaddress.c | 56 +++++++++++++++++++----------
1 file changed, 38 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..9eb574f5ccc 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,16 +4092,16 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tup);
break;
}
@@ -4109,6 +4112,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,10 +4129,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4137,6 +4144,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4158,11 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
+
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4173,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,10 +4190,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4189,6 +4205,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4219,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.52.0
----Next_Part(Tue_Jun__2_13_43_56_2026_572)----
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH v2] Make propgraph object descriptions translatable
@ 2026-06-02 03:07 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-06-02 03:07 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
---
src/backend/catalog/objectaddress.c | 56 +++++++++++++++++++----------
1 file changed, 38 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..9eb574f5ccc 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,16 +4092,16 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tup);
break;
}
@@ -4109,6 +4112,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,10 +4129,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4137,6 +4144,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4158,11 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
+
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4173,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,10 +4190,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4189,6 +4205,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4219,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.52.0
----Next_Part(Tue_Jun__2_13_43_56_2026_572)----
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH v2] Make propgraph object descriptions translatable
@ 2026-06-02 03:07 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-06-02 03:07 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
---
src/backend/catalog/objectaddress.c | 56 +++++++++++++++++++----------
1 file changed, 38 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..9eb574f5ccc 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,16 +4092,16 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tup);
break;
}
@@ -4109,6 +4112,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,10 +4129,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4137,6 +4144,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4158,11 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
+
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4173,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,10 +4190,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4189,6 +4205,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4219,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.52.0
----Next_Part(Tue_Jun__2_13_43_56_2026_572)----
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH v2] Make propgraph object descriptions translatable
@ 2026-06-02 03:07 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-06-02 03:07 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
---
src/backend/catalog/objectaddress.c | 56 +++++++++++++++++++----------
1 file changed, 38 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..9eb574f5ccc 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,16 +4092,16 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tup);
break;
}
@@ -4109,6 +4112,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,10 +4129,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4137,6 +4144,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4158,11 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
+
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4173,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,10 +4190,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4189,6 +4205,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4219,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.52.0
----Next_Part(Tue_Jun__2_13_43_56_2026_572)----
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH v2] Make propgraph object descriptions translatable
@ 2026-06-02 03:07 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-06-02 03:07 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
---
src/backend/catalog/objectaddress.c | 56 +++++++++++++++++++----------
1 file changed, 38 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..9eb574f5ccc 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,16 +4092,16 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tup);
break;
}
@@ -4109,6 +4112,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,10 +4129,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4137,6 +4144,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4158,11 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
+
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4173,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,10 +4190,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4189,6 +4205,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4219,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.52.0
----Next_Part(Tue_Jun__2_13_43_56_2026_572)----
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH v2] Make propgraph object descriptions translatable
@ 2026-06-02 03:07 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-06-02 03:07 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
---
src/backend/catalog/objectaddress.c | 56 +++++++++++++++++++----------
1 file changed, 38 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..9eb574f5ccc 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,16 +4092,16 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tup);
break;
}
@@ -4109,6 +4112,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,10 +4129,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4137,6 +4144,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4158,11 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
+
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4173,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,10 +4190,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4189,6 +4205,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4219,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.52.0
----Next_Part(Tue_Jun__2_13_43_56_2026_572)----
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH v2] Make propgraph object descriptions translatable
@ 2026-06-02 03:07 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-06-02 03:07 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
---
src/backend/catalog/objectaddress.c | 56 +++++++++++++++++++----------
1 file changed, 38 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..9eb574f5ccc 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,16 +4092,16 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tup);
break;
}
@@ -4109,6 +4112,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,10 +4129,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4137,6 +4144,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4158,11 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
+
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4173,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,10 +4190,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4189,6 +4205,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4219,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.52.0
----Next_Part(Tue_Jun__2_13_43_56_2026_572)----
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH v2] Make propgraph object descriptions translatable
@ 2026-06-02 03:07 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-06-02 03:07 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
---
src/backend/catalog/objectaddress.c | 56 +++++++++++++++++++----------
1 file changed, 38 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..9eb574f5ccc 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,16 +4092,16 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tup);
break;
}
@@ -4109,6 +4112,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,10 +4129,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4137,6 +4144,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4158,11 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
+
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4173,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,10 +4190,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4189,6 +4205,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4219,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.52.0
----Next_Part(Tue_Jun__2_13_43_56_2026_572)----
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH v2] Make propgraph object descriptions translatable
@ 2026-06-02 03:07 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-06-02 03:07 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
---
src/backend/catalog/objectaddress.c | 56 +++++++++++++++++++----------
1 file changed, 38 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..9eb574f5ccc 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,16 +4092,16 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tup);
break;
}
@@ -4109,6 +4112,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,10 +4129,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4137,6 +4144,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4158,11 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
+
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4173,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,10 +4190,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4189,6 +4205,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4219,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.52.0
----Next_Part(Tue_Jun__2_13_43_56_2026_572)----
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH v2] Make propgraph object descriptions translatable
@ 2026-06-02 03:07 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-06-02 03:07 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
---
src/backend/catalog/objectaddress.c | 56 +++++++++++++++++++----------
1 file changed, 38 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..9eb574f5ccc 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,16 +4092,16 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tup);
break;
}
@@ -4109,6 +4112,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,10 +4129,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4137,6 +4144,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4158,11 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
+
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4173,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,10 +4190,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4189,6 +4205,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4219,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.52.0
----Next_Part(Tue_Jun__2_13_43_56_2026_572)----
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH v2] Make propgraph object descriptions translatable
@ 2026-06-02 03:07 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-06-02 03:07 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
---
src/backend/catalog/objectaddress.c | 56 +++++++++++++++++++----------
1 file changed, 38 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..9eb574f5ccc 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,16 +4092,16 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tup);
break;
}
@@ -4109,6 +4112,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,10 +4129,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4137,6 +4144,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4158,11 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
+
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4173,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,10 +4190,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4189,6 +4205,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4219,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.52.0
----Next_Part(Tue_Jun__2_13_43_56_2026_572)----
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH v2] Make propgraph object descriptions translatable
@ 2026-06-02 03:07 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-06-02 03:07 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
---
src/backend/catalog/objectaddress.c | 56 +++++++++++++++++++----------
1 file changed, 38 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..9eb574f5ccc 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,16 +4092,16 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tup);
break;
}
@@ -4109,6 +4112,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,10 +4129,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4137,6 +4144,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4158,11 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
+
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4173,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,10 +4190,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4189,6 +4205,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4219,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.52.0
----Next_Part(Tue_Jun__2_13_43_56_2026_572)----
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH v2] Make propgraph object descriptions translatable
@ 2026-06-02 03:07 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-06-02 03:07 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
---
src/backend/catalog/objectaddress.c | 56 +++++++++++++++++++----------
1 file changed, 38 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..9eb574f5ccc 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,16 +4092,16 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tup);
break;
}
@@ -4109,6 +4112,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,10 +4129,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4137,6 +4144,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4158,11 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
+
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4173,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,10 +4190,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4189,6 +4205,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4219,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.52.0
----Next_Part(Tue_Jun__2_13_43_56_2026_572)----
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH v2] Make propgraph object descriptions translatable
@ 2026-06-02 03:07 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-06-02 03:07 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
---
src/backend/catalog/objectaddress.c | 56 +++++++++++++++++++----------
1 file changed, 38 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..9eb574f5ccc 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,16 +4092,16 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tup);
break;
}
@@ -4109,6 +4112,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,10 +4129,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4137,6 +4144,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4158,11 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
+
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4173,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,10 +4190,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4189,6 +4205,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4219,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.52.0
----Next_Part(Tue_Jun__2_13_43_56_2026_572)----
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH v2] Make propgraph object descriptions translatable
@ 2026-06-02 03:07 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-06-02 03:07 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
---
src/backend/catalog/objectaddress.c | 56 +++++++++++++++++++----------
1 file changed, 38 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..9eb574f5ccc 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,16 +4092,16 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tup);
break;
}
@@ -4109,6 +4112,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,10 +4129,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4137,6 +4144,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4158,11 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
+
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4173,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,10 +4190,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4189,6 +4205,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4219,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.52.0
----Next_Part(Tue_Jun__2_13_43_56_2026_572)----
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH v2] Make propgraph object descriptions translatable
@ 2026-06-02 03:07 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-06-02 03:07 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
---
src/backend/catalog/objectaddress.c | 56 +++++++++++++++++++----------
1 file changed, 38 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..9eb574f5ccc 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,16 +4092,16 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tup);
break;
}
@@ -4109,6 +4112,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,10 +4129,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4137,6 +4144,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4158,11 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
+
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4173,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,10 +4190,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4189,6 +4205,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4219,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.52.0
----Next_Part(Tue_Jun__2_13_43_56_2026_572)----
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH v2] Make propgraph object descriptions translatable
@ 2026-06-02 03:07 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-06-02 03:07 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
---
src/backend/catalog/objectaddress.c | 56 +++++++++++++++++++----------
1 file changed, 38 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..9eb574f5ccc 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,16 +4092,16 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tup);
break;
}
@@ -4109,6 +4112,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,10 +4129,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4137,6 +4144,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4158,11 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
+
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4173,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,10 +4190,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4189,6 +4205,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4219,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.52.0
----Next_Part(Tue_Jun__2_13_43_56_2026_572)----
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH v2] Make propgraph object descriptions translatable
@ 2026-06-02 03:07 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-06-02 03:07 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
---
src/backend/catalog/objectaddress.c | 56 +++++++++++++++++++----------
1 file changed, 38 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..9eb574f5ccc 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,16 +4092,16 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tup);
break;
}
@@ -4109,6 +4112,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,10 +4129,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4137,6 +4144,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4158,11 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
+
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4173,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,10 +4190,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4189,6 +4205,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4219,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.52.0
----Next_Part(Tue_Jun__2_13_43_56_2026_572)----
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH v2] Make propgraph object descriptions translatable
@ 2026-06-02 03:07 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-06-02 03:07 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
---
src/backend/catalog/objectaddress.c | 56 +++++++++++++++++++----------
1 file changed, 38 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..9eb574f5ccc 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,16 +4092,16 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tup);
break;
}
@@ -4109,6 +4112,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,10 +4129,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4137,6 +4144,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4158,11 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
+
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4173,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,10 +4190,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4189,6 +4205,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4219,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.52.0
----Next_Part(Tue_Jun__2_13_43_56_2026_572)----
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH v2] Make propgraph object descriptions translatable
@ 2026-06-02 03:07 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-06-02 03:07 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
---
src/backend/catalog/objectaddress.c | 56 +++++++++++++++++++----------
1 file changed, 38 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..9eb574f5ccc 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,16 +4092,16 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tup);
break;
}
@@ -4109,6 +4112,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,10 +4129,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4137,6 +4144,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4158,11 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
+
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4173,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,10 +4190,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4189,6 +4205,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4219,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.52.0
----Next_Part(Tue_Jun__2_13_43_56_2026_572)----
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH v2] Make propgraph object descriptions translatable
@ 2026-06-02 03:07 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-06-02 03:07 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
---
src/backend/catalog/objectaddress.c | 56 +++++++++++++++++++----------
1 file changed, 38 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..9eb574f5ccc 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,16 +4092,16 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tup);
break;
}
@@ -4109,6 +4112,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,10 +4129,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4137,6 +4144,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4158,11 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
+
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4173,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,10 +4190,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4189,6 +4205,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4219,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.52.0
----Next_Part(Tue_Jun__2_13_43_56_2026_572)----
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH v2] Make propgraph object descriptions translatable
@ 2026-06-02 03:07 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-06-02 03:07 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
---
src/backend/catalog/objectaddress.c | 56 +++++++++++++++++++----------
1 file changed, 38 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..9eb574f5ccc 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,16 +4092,16 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tup);
break;
}
@@ -4109,6 +4112,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,10 +4129,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4137,6 +4144,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4158,11 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
+
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4173,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,10 +4190,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4189,6 +4205,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4219,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.52.0
----Next_Part(Tue_Jun__2_13_43_56_2026_572)----
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH v2] Make propgraph object descriptions translatable
@ 2026-06-02 03:07 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-06-02 03:07 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
---
src/backend/catalog/objectaddress.c | 56 +++++++++++++++++++----------
1 file changed, 38 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..9eb574f5ccc 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,16 +4092,16 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tup);
break;
}
@@ -4109,6 +4112,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,10 +4129,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4137,6 +4144,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4158,11 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
+
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4173,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,10 +4190,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4189,6 +4205,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4219,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.52.0
----Next_Part(Tue_Jun__2_13_43_56_2026_572)----
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH v2] Make propgraph object descriptions translatable
@ 2026-06-02 03:07 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-06-02 03:07 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
---
src/backend/catalog/objectaddress.c | 56 +++++++++++++++++++----------
1 file changed, 38 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..9eb574f5ccc 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,16 +4092,16 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tup);
break;
}
@@ -4109,6 +4112,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,10 +4129,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4137,6 +4144,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4158,11 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
+
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4173,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,10 +4190,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4189,6 +4205,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4219,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.52.0
----Next_Part(Tue_Jun__2_13_43_56_2026_572)----
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH v2] Make propgraph object descriptions translatable
@ 2026-06-02 03:07 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-06-02 03:07 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
---
src/backend/catalog/objectaddress.c | 56 +++++++++++++++++++----------
1 file changed, 38 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..9eb574f5ccc 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,16 +4092,16 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tup);
break;
}
@@ -4109,6 +4112,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,10 +4129,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4137,6 +4144,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4158,11 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
+
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4173,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,10 +4190,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4189,6 +4205,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4219,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.52.0
----Next_Part(Tue_Jun__2_13_43_56_2026_572)----
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH v2] Make propgraph object descriptions translatable
@ 2026-06-02 03:07 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-06-02 03:07 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
---
src/backend/catalog/objectaddress.c | 56 +++++++++++++++++++----------
1 file changed, 38 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..9eb574f5ccc 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,16 +4092,16 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tup);
break;
}
@@ -4109,6 +4112,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,10 +4129,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4137,6 +4144,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4158,11 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
+
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4173,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,10 +4190,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4189,6 +4205,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4219,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.52.0
----Next_Part(Tue_Jun__2_13_43_56_2026_572)----
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH v2] Make propgraph object descriptions translatable
@ 2026-06-02 03:07 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-06-02 03:07 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
---
src/backend/catalog/objectaddress.c | 56 +++++++++++++++++++----------
1 file changed, 38 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..9eb574f5ccc 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,16 +4092,16 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tup);
break;
}
@@ -4109,6 +4112,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,10 +4129,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4137,6 +4144,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4158,11 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
+
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4173,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,10 +4190,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4189,6 +4205,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4219,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.52.0
----Next_Part(Tue_Jun__2_13_43_56_2026_572)----
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH v2] Make propgraph object descriptions translatable
@ 2026-06-02 03:07 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-06-02 03:07 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
---
src/backend/catalog/objectaddress.c | 56 +++++++++++++++++++----------
1 file changed, 38 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..9eb574f5ccc 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,16 +4092,16 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tup);
break;
}
@@ -4109,6 +4112,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,10 +4129,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4137,6 +4144,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4158,11 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
+
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4173,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,10 +4190,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4189,6 +4205,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4219,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.52.0
----Next_Part(Tue_Jun__2_13_43_56_2026_572)----
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH v2] Make propgraph object descriptions translatable
@ 2026-06-02 03:07 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-06-02 03:07 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
---
src/backend/catalog/objectaddress.c | 56 +++++++++++++++++++----------
1 file changed, 38 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..9eb574f5ccc 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,16 +4092,16 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tup);
break;
}
@@ -4109,6 +4112,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,10 +4129,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4137,6 +4144,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4158,11 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
+
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4173,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,10 +4190,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4189,6 +4205,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4219,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.52.0
----Next_Part(Tue_Jun__2_13_43_56_2026_572)----
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH v2] Make propgraph object descriptions translatable
@ 2026-06-02 03:07 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-06-02 03:07 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
---
src/backend/catalog/objectaddress.c | 56 +++++++++++++++++++----------
1 file changed, 38 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..9eb574f5ccc 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,16 +4092,16 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tup);
break;
}
@@ -4109,6 +4112,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,10 +4129,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4137,6 +4144,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4158,11 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
+
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4173,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,10 +4190,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4189,6 +4205,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4219,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.52.0
----Next_Part(Tue_Jun__2_13_43_56_2026_572)----
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH v2] Make propgraph object descriptions translatable
@ 2026-06-02 03:07 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-06-02 03:07 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
---
src/backend/catalog/objectaddress.c | 56 +++++++++++++++++++----------
1 file changed, 38 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..9eb574f5ccc 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,16 +4092,16 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tup);
break;
}
@@ -4109,6 +4112,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,10 +4129,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4137,6 +4144,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4158,11 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
+
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4173,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,10 +4190,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4189,6 +4205,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4219,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.52.0
----Next_Part(Tue_Jun__2_13_43_56_2026_572)----
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH v2] Make propgraph object descriptions translatable
@ 2026-06-02 03:07 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-06-02 03:07 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
---
src/backend/catalog/objectaddress.c | 56 +++++++++++++++++++----------
1 file changed, 38 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..9eb574f5ccc 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,16 +4092,16 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tup);
break;
}
@@ -4109,6 +4112,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,10 +4129,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4137,6 +4144,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4158,11 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
+
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4173,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,10 +4190,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4189,6 +4205,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4219,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.52.0
----Next_Part(Tue_Jun__2_13_43_56_2026_572)----
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH v2] Make propgraph object descriptions translatable
@ 2026-06-02 03:07 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-06-02 03:07 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
---
src/backend/catalog/objectaddress.c | 56 +++++++++++++++++++----------
1 file changed, 38 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..9eb574f5ccc 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,16 +4092,16 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tup);
break;
}
@@ -4109,6 +4112,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,10 +4129,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4137,6 +4144,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4158,11 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
+
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4173,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,10 +4190,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4189,6 +4205,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4219,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.52.0
----Next_Part(Tue_Jun__2_13_43_56_2026_572)----
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH v2] Make propgraph object descriptions translatable
@ 2026-06-02 03:07 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-06-02 03:07 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
---
src/backend/catalog/objectaddress.c | 56 +++++++++++++++++++----------
1 file changed, 38 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..9eb574f5ccc 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,16 +4092,16 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tup);
break;
}
@@ -4109,6 +4112,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,10 +4129,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4137,6 +4144,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4158,11 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
+
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4173,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,10 +4190,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4189,6 +4205,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4219,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.52.0
----Next_Part(Tue_Jun__2_13_43_56_2026_572)----
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH v2] Make propgraph object descriptions translatable
@ 2026-06-02 03:07 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-06-02 03:07 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
---
src/backend/catalog/objectaddress.c | 56 +++++++++++++++++++----------
1 file changed, 38 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..9eb574f5ccc 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,16 +4092,16 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tup);
break;
}
@@ -4109,6 +4112,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,10 +4129,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4137,6 +4144,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4158,11 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
+
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4173,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,10 +4190,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4189,6 +4205,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4219,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.52.0
----Next_Part(Tue_Jun__2_13_43_56_2026_572)----
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH v2] Make propgraph object descriptions translatable
@ 2026-06-02 03:07 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-06-02 03:07 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
---
src/backend/catalog/objectaddress.c | 56 +++++++++++++++++++----------
1 file changed, 38 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..9eb574f5ccc 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,16 +4092,16 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tup);
break;
}
@@ -4109,6 +4112,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,10 +4129,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4137,6 +4144,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4158,11 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
+
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4173,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,10 +4190,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4189,6 +4205,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4219,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.52.0
----Next_Part(Tue_Jun__2_13_43_56_2026_572)----
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH v2] Make propgraph object descriptions translatable
@ 2026-06-02 03:07 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-06-02 03:07 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
---
src/backend/catalog/objectaddress.c | 56 +++++++++++++++++++----------
1 file changed, 38 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..9eb574f5ccc 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,16 +4092,16 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tup);
break;
}
@@ -4109,6 +4112,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,10 +4129,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4137,6 +4144,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4158,11 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
+
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4173,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,10 +4190,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4189,6 +4205,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4219,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.52.0
----Next_Part(Tue_Jun__2_13_43_56_2026_572)----
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH v2] Make propgraph object descriptions translatable
@ 2026-06-02 03:07 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-06-02 03:07 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
---
src/backend/catalog/objectaddress.c | 56 +++++++++++++++++++----------
1 file changed, 38 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..9eb574f5ccc 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,16 +4092,16 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tup);
break;
}
@@ -4109,6 +4112,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,10 +4129,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4137,6 +4144,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4158,11 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
+
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4173,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,10 +4190,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4189,6 +4205,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4219,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.52.0
----Next_Part(Tue_Jun__2_13_43_56_2026_572)----
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH v2] Make propgraph object descriptions translatable
@ 2026-06-02 03:07 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-06-02 03:07 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
---
src/backend/catalog/objectaddress.c | 56 +++++++++++++++++++----------
1 file changed, 38 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..9eb574f5ccc 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,16 +4092,16 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tup);
break;
}
@@ -4109,6 +4112,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,10 +4129,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4137,6 +4144,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4158,11 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
+
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4173,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,10 +4190,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4189,6 +4205,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4219,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.52.0
----Next_Part(Tue_Jun__2_13_43_56_2026_572)----
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH v2] Make propgraph object descriptions translatable
@ 2026-06-02 03:07 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-06-02 03:07 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
---
src/backend/catalog/objectaddress.c | 56 +++++++++++++++++++----------
1 file changed, 38 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..9eb574f5ccc 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,16 +4092,16 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tup);
break;
}
@@ -4109,6 +4112,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,10 +4129,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4137,6 +4144,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4158,11 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
+
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4173,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,10 +4190,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4189,6 +4205,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4219,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.52.0
----Next_Part(Tue_Jun__2_13_43_56_2026_572)----
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH v2] Make propgraph object descriptions translatable
@ 2026-06-02 03:07 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-06-02 03:07 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
---
src/backend/catalog/objectaddress.c | 56 +++++++++++++++++++----------
1 file changed, 38 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..9eb574f5ccc 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,16 +4092,16 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tup);
break;
}
@@ -4109,6 +4112,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,10 +4129,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4137,6 +4144,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4158,11 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
+
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4173,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,10 +4190,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4189,6 +4205,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4219,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.52.0
----Next_Part(Tue_Jun__2_13_43_56_2026_572)----
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH v2] Make propgraph object descriptions translatable
@ 2026-06-02 03:07 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-06-02 03:07 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
---
src/backend/catalog/objectaddress.c | 56 +++++++++++++++++++----------
1 file changed, 38 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..9eb574f5ccc 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,16 +4092,16 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tup);
break;
}
@@ -4109,6 +4112,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,10 +4129,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4137,6 +4144,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4158,11 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
+
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4173,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,10 +4190,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4189,6 +4205,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4219,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.52.0
----Next_Part(Tue_Jun__2_13_43_56_2026_572)----
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH v2] Make propgraph object descriptions translatable
@ 2026-06-02 03:07 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-06-02 03:07 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
---
src/backend/catalog/objectaddress.c | 56 +++++++++++++++++++----------
1 file changed, 38 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..9eb574f5ccc 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,16 +4092,16 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tup);
break;
}
@@ -4109,6 +4112,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,10 +4129,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4137,6 +4144,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4158,11 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
+
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4173,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,10 +4190,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4189,6 +4205,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4219,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.52.0
----Next_Part(Tue_Jun__2_13_43_56_2026_572)----
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH v2] Make propgraph object descriptions translatable
@ 2026-06-02 03:07 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-06-02 03:07 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
---
src/backend/catalog/objectaddress.c | 56 +++++++++++++++++++----------
1 file changed, 38 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..9eb574f5ccc 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,16 +4092,16 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tup);
break;
}
@@ -4109,6 +4112,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,10 +4129,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4137,6 +4144,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4158,11 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
+
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4173,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,10 +4190,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4189,6 +4205,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4219,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.52.0
----Next_Part(Tue_Jun__2_13_43_56_2026_572)----
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH v2] Make propgraph object descriptions translatable
@ 2026-06-02 03:07 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-06-02 03:07 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
---
src/backend/catalog/objectaddress.c | 56 +++++++++++++++++++----------
1 file changed, 38 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..9eb574f5ccc 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,16 +4092,16 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tup);
break;
}
@@ -4109,6 +4112,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,10 +4129,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4137,6 +4144,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4158,11 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
+
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4173,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,10 +4190,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4189,6 +4205,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4219,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.52.0
----Next_Part(Tue_Jun__2_13_43_56_2026_572)----
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH v2] Make propgraph object descriptions translatable
@ 2026-06-02 03:07 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-06-02 03:07 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
---
src/backend/catalog/objectaddress.c | 56 +++++++++++++++++++----------
1 file changed, 38 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..9eb574f5ccc 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,16 +4092,16 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tup);
break;
}
@@ -4109,6 +4112,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,10 +4129,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4137,6 +4144,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4158,11 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
+
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4173,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,10 +4190,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4189,6 +4205,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4219,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.52.0
----Next_Part(Tue_Jun__2_13_43_56_2026_572)----
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH v2] Make propgraph object descriptions translatable
@ 2026-06-02 03:07 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-06-02 03:07 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
---
src/backend/catalog/objectaddress.c | 56 +++++++++++++++++++----------
1 file changed, 38 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..9eb574f5ccc 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,16 +4092,16 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tup);
break;
}
@@ -4109,6 +4112,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,10 +4129,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4137,6 +4144,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4158,11 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
+
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4173,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,10 +4190,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4189,6 +4205,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4219,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.52.0
----Next_Part(Tue_Jun__2_13_43_56_2026_572)----
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH v2] Make propgraph object descriptions translatable
@ 2026-06-02 03:07 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-06-02 03:07 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
---
src/backend/catalog/objectaddress.c | 56 +++++++++++++++++++----------
1 file changed, 38 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..9eb574f5ccc 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,16 +4092,16 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tup);
break;
}
@@ -4109,6 +4112,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,10 +4129,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4137,6 +4144,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4158,11 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
+
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4173,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,10 +4190,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4189,6 +4205,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4219,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.52.0
----Next_Part(Tue_Jun__2_13_43_56_2026_572)----
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH v2] Make propgraph object descriptions translatable
@ 2026-06-02 03:07 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-06-02 03:07 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
---
src/backend/catalog/objectaddress.c | 56 +++++++++++++++++++----------
1 file changed, 38 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..9eb574f5ccc 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,16 +4092,16 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tup);
break;
}
@@ -4109,6 +4112,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,10 +4129,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4137,6 +4144,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4158,11 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
+
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4173,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,10 +4190,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4189,6 +4205,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4219,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.52.0
----Next_Part(Tue_Jun__2_13_43_56_2026_572)----
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH v2] Make propgraph object descriptions translatable
@ 2026-06-02 03:07 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-06-02 03:07 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
---
src/backend/catalog/objectaddress.c | 56 +++++++++++++++++++----------
1 file changed, 38 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..9eb574f5ccc 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,16 +4092,16 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tup);
break;
}
@@ -4109,6 +4112,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,10 +4129,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4137,6 +4144,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4158,11 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
+
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4173,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,10 +4190,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4189,6 +4205,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4219,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.52.0
----Next_Part(Tue_Jun__2_13_43_56_2026_572)----
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH v2] Make propgraph object descriptions translatable
@ 2026-06-02 03:07 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-06-02 03:07 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
---
src/backend/catalog/objectaddress.c | 56 +++++++++++++++++++----------
1 file changed, 38 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..9eb574f5ccc 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,16 +4092,16 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tup);
break;
}
@@ -4109,6 +4112,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,10 +4129,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4137,6 +4144,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4158,11 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
+
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4173,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,10 +4190,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4189,6 +4205,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4219,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.52.0
----Next_Part(Tue_Jun__2_13_43_56_2026_572)----
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH v2] Make propgraph object descriptions translatable
@ 2026-06-02 03:07 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-06-02 03:07 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
---
src/backend/catalog/objectaddress.c | 56 +++++++++++++++++++----------
1 file changed, 38 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..9eb574f5ccc 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,16 +4092,16 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tup);
break;
}
@@ -4109,6 +4112,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,10 +4129,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4137,6 +4144,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4158,11 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
+
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4173,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,10 +4190,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4189,6 +4205,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4219,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.52.0
----Next_Part(Tue_Jun__2_13_43_56_2026_572)----
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH v2] Make propgraph object descriptions translatable
@ 2026-06-02 03:07 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-06-02 03:07 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
---
src/backend/catalog/objectaddress.c | 56 +++++++++++++++++++----------
1 file changed, 38 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..9eb574f5ccc 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,16 +4092,16 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tup);
break;
}
@@ -4109,6 +4112,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,10 +4129,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4137,6 +4144,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4158,11 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
+
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4173,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,10 +4190,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4189,6 +4205,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4219,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.52.0
----Next_Part(Tue_Jun__2_13_43_56_2026_572)----
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH v2] Make propgraph object descriptions translatable
@ 2026-06-02 03:07 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-06-02 03:07 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
---
src/backend/catalog/objectaddress.c | 56 +++++++++++++++++++----------
1 file changed, 38 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..9eb574f5ccc 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,16 +4092,16 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tup);
break;
}
@@ -4109,6 +4112,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,10 +4129,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4137,6 +4144,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4158,11 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
+
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4173,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,10 +4190,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4189,6 +4205,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4219,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.52.0
----Next_Part(Tue_Jun__2_13_43_56_2026_572)----
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH v2] Make propgraph object descriptions translatable
@ 2026-06-02 03:07 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-06-02 03:07 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
---
src/backend/catalog/objectaddress.c | 56 +++++++++++++++++++----------
1 file changed, 38 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..9eb574f5ccc 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,16 +4092,16 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tup);
break;
}
@@ -4109,6 +4112,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,10 +4129,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4137,6 +4144,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4158,11 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
+
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4173,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,10 +4190,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4189,6 +4205,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4219,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.52.0
----Next_Part(Tue_Jun__2_13_43_56_2026_572)----
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH v2] Make propgraph object descriptions translatable
@ 2026-06-02 03:07 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-06-02 03:07 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
---
src/backend/catalog/objectaddress.c | 56 +++++++++++++++++++----------
1 file changed, 38 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..9eb574f5ccc 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,16 +4092,16 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tup);
break;
}
@@ -4109,6 +4112,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,10 +4129,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4137,6 +4144,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4158,11 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
+
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4173,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,10 +4190,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4189,6 +4205,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4219,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.52.0
----Next_Part(Tue_Jun__2_13_43_56_2026_572)----
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH v2] Make propgraph object descriptions translatable
@ 2026-06-02 03:07 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-06-02 03:07 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
---
src/backend/catalog/objectaddress.c | 56 +++++++++++++++++++----------
1 file changed, 38 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..9eb574f5ccc 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,16 +4092,16 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tup);
break;
}
@@ -4109,6 +4112,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,10 +4129,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4137,6 +4144,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4158,11 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
+
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4173,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,10 +4190,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4189,6 +4205,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4219,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.52.0
----Next_Part(Tue_Jun__2_13_43_56_2026_572)----
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH v2] Make propgraph object descriptions translatable
@ 2026-06-02 03:07 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-06-02 03:07 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
---
src/backend/catalog/objectaddress.c | 56 +++++++++++++++++++----------
1 file changed, 38 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..9eb574f5ccc 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,16 +4092,16 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tup);
break;
}
@@ -4109,6 +4112,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,10 +4129,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4137,6 +4144,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4158,11 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
+
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4173,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,10 +4190,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4189,6 +4205,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4219,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.52.0
----Next_Part(Tue_Jun__2_13_43_56_2026_572)----
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH v2] Make propgraph object descriptions translatable
@ 2026-06-02 03:07 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-06-02 03:07 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
---
src/backend/catalog/objectaddress.c | 56 +++++++++++++++++++----------
1 file changed, 38 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..9eb574f5ccc 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,16 +4092,16 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tup);
break;
}
@@ -4109,6 +4112,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,10 +4129,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4137,6 +4144,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4158,11 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
+
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4173,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,10 +4190,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4189,6 +4205,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4219,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.52.0
----Next_Part(Tue_Jun__2_13_43_56_2026_572)----
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH v2] Make propgraph object descriptions translatable
@ 2026-06-02 03:07 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-06-02 03:07 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
---
src/backend/catalog/objectaddress.c | 56 +++++++++++++++++++----------
1 file changed, 38 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..9eb574f5ccc 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,16 +4092,16 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tup);
break;
}
@@ -4109,6 +4112,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,10 +4129,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4137,6 +4144,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4158,11 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
+
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4173,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,10 +4190,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4189,6 +4205,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4219,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.52.0
----Next_Part(Tue_Jun__2_13_43_56_2026_572)----
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH v2] Make propgraph object descriptions translatable
@ 2026-06-02 03:07 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-06-02 03:07 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
---
src/backend/catalog/objectaddress.c | 56 +++++++++++++++++++----------
1 file changed, 38 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..9eb574f5ccc 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,16 +4092,16 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tup);
break;
}
@@ -4109,6 +4112,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,10 +4129,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4137,6 +4144,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4158,11 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
+
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4173,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,10 +4190,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4189,6 +4205,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4219,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.52.0
----Next_Part(Tue_Jun__2_13_43_56_2026_572)----
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH v2] Make propgraph object descriptions translatable
@ 2026-06-02 03:07 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-06-02 03:07 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
---
src/backend/catalog/objectaddress.c | 56 +++++++++++++++++++----------
1 file changed, 38 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..9eb574f5ccc 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,16 +4092,16 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tup);
break;
}
@@ -4109,6 +4112,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,10 +4129,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4137,6 +4144,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4158,11 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
+
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4173,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,10 +4190,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4189,6 +4205,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4219,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.52.0
----Next_Part(Tue_Jun__2_13_43_56_2026_572)----
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH v2] Make propgraph object descriptions translatable
@ 2026-06-02 03:07 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-06-02 03:07 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
---
src/backend/catalog/objectaddress.c | 56 +++++++++++++++++++----------
1 file changed, 38 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..9eb574f5ccc 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,16 +4092,16 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tup);
break;
}
@@ -4109,6 +4112,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,10 +4129,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4137,6 +4144,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4158,11 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
+
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4173,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,10 +4190,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4189,6 +4205,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4219,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.52.0
----Next_Part(Tue_Jun__2_13_43_56_2026_572)----
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH v2] Make propgraph object descriptions translatable
@ 2026-06-02 03:07 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-06-02 03:07 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
---
src/backend/catalog/objectaddress.c | 56 +++++++++++++++++++----------
1 file changed, 38 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..9eb574f5ccc 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,16 +4092,16 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tup);
break;
}
@@ -4109,6 +4112,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,10 +4129,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4137,6 +4144,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4158,11 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
+
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4173,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,10 +4190,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4189,6 +4205,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4219,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.52.0
----Next_Part(Tue_Jun__2_13_43_56_2026_572)----
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH v2] Make propgraph object descriptions translatable
@ 2026-06-02 03:07 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-06-02 03:07 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
---
src/backend/catalog/objectaddress.c | 56 +++++++++++++++++++----------
1 file changed, 38 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..9eb574f5ccc 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,16 +4092,16 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tup);
break;
}
@@ -4109,6 +4112,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,10 +4129,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4137,6 +4144,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4158,11 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
+
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4173,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,10 +4190,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4189,6 +4205,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4219,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.52.0
----Next_Part(Tue_Jun__2_13_43_56_2026_572)----
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH v2] Make propgraph object descriptions translatable
@ 2026-06-02 03:07 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-06-02 03:07 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
---
src/backend/catalog/objectaddress.c | 56 +++++++++++++++++++----------
1 file changed, 38 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..9eb574f5ccc 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,16 +4092,16 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tup);
break;
}
@@ -4109,6 +4112,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,10 +4129,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4137,6 +4144,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4158,11 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
+
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4173,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,10 +4190,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4189,6 +4205,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4219,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.52.0
----Next_Part(Tue_Jun__2_13_43_56_2026_572)----
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH v2] Make propgraph object descriptions translatable
@ 2026-06-02 03:07 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-06-02 03:07 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
---
src/backend/catalog/objectaddress.c | 56 +++++++++++++++++++----------
1 file changed, 38 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..9eb574f5ccc 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,16 +4092,16 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tup);
break;
}
@@ -4109,6 +4112,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,10 +4129,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4137,6 +4144,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4158,11 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
+
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4173,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,10 +4190,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4189,6 +4205,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4219,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.52.0
----Next_Part(Tue_Jun__2_13_43_56_2026_572)----
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH v2] Make propgraph object descriptions translatable
@ 2026-06-02 03:07 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-06-02 03:07 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
---
src/backend/catalog/objectaddress.c | 56 +++++++++++++++++++----------
1 file changed, 38 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..9eb574f5ccc 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,16 +4092,16 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tup);
break;
}
@@ -4109,6 +4112,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,10 +4129,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4137,6 +4144,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4158,11 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
+
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4173,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,10 +4190,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4189,6 +4205,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4219,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.52.0
----Next_Part(Tue_Jun__2_13_43_56_2026_572)----
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH v2] Make propgraph object descriptions translatable
@ 2026-06-02 03:07 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-06-02 03:07 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
---
src/backend/catalog/objectaddress.c | 56 +++++++++++++++++++----------
1 file changed, 38 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..9eb574f5ccc 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,16 +4092,16 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tup);
break;
}
@@ -4109,6 +4112,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,10 +4129,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4137,6 +4144,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4158,11 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
+
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4173,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,10 +4190,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4189,6 +4205,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4219,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.52.0
----Next_Part(Tue_Jun__2_13_43_56_2026_572)----
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH v2] Make propgraph object descriptions translatable
@ 2026-06-02 03:07 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-06-02 03:07 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
---
src/backend/catalog/objectaddress.c | 56 +++++++++++++++++++----------
1 file changed, 38 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..9eb574f5ccc 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,16 +4092,16 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tup);
break;
}
@@ -4109,6 +4112,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,10 +4129,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4137,6 +4144,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4158,11 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
+
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4173,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,10 +4190,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4189,6 +4205,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4219,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.52.0
----Next_Part(Tue_Jun__2_13_43_56_2026_572)----
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH v2] Make propgraph object descriptions translatable
@ 2026-06-02 03:07 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-06-02 03:07 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
---
src/backend/catalog/objectaddress.c | 56 +++++++++++++++++++----------
1 file changed, 38 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..9eb574f5ccc 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,16 +4092,16 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tup);
break;
}
@@ -4109,6 +4112,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,10 +4129,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4137,6 +4144,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4158,11 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
+
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4173,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,10 +4190,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4189,6 +4205,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4219,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.52.0
----Next_Part(Tue_Jun__2_13_43_56_2026_572)----
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH v2] Make propgraph object descriptions translatable
@ 2026-06-02 03:07 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-06-02 03:07 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
---
src/backend/catalog/objectaddress.c | 56 +++++++++++++++++++----------
1 file changed, 38 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..9eb574f5ccc 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,16 +4092,16 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tup);
break;
}
@@ -4109,6 +4112,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,10 +4129,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4137,6 +4144,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4158,11 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
+
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4173,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,10 +4190,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4189,6 +4205,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4219,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.52.0
----Next_Part(Tue_Jun__2_13_43_56_2026_572)----
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH v2] Make propgraph object descriptions translatable
@ 2026-06-02 03:07 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-06-02 03:07 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
---
src/backend/catalog/objectaddress.c | 56 +++++++++++++++++++----------
1 file changed, 38 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..9eb574f5ccc 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,16 +4092,16 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tup);
break;
}
@@ -4109,6 +4112,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,10 +4129,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4137,6 +4144,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4158,11 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
+
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4173,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,10 +4190,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4189,6 +4205,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4219,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.52.0
----Next_Part(Tue_Jun__2_13_43_56_2026_572)----
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH v2] Make propgraph object descriptions translatable
@ 2026-06-02 03:07 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-06-02 03:07 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
---
src/backend/catalog/objectaddress.c | 56 +++++++++++++++++++----------
1 file changed, 38 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..9eb574f5ccc 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,16 +4092,16 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tup);
break;
}
@@ -4109,6 +4112,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,10 +4129,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4137,6 +4144,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4158,11 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
+
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4173,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,10 +4190,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4189,6 +4205,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4219,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.52.0
----Next_Part(Tue_Jun__2_13_43_56_2026_572)----
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH v2] Make propgraph object descriptions translatable
@ 2026-06-02 03:07 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-06-02 03:07 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
---
src/backend/catalog/objectaddress.c | 56 +++++++++++++++++++----------
1 file changed, 38 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..9eb574f5ccc 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,16 +4092,16 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tup);
break;
}
@@ -4109,6 +4112,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,10 +4129,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4137,6 +4144,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4158,11 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
+
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4173,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,10 +4190,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4189,6 +4205,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4219,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.52.0
----Next_Part(Tue_Jun__2_13_43_56_2026_572)----
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH v2] Make propgraph object descriptions translatable
@ 2026-06-02 03:07 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-06-02 03:07 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
---
src/backend/catalog/objectaddress.c | 56 +++++++++++++++++++----------
1 file changed, 38 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..9eb574f5ccc 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,16 +4092,16 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tup);
break;
}
@@ -4109,6 +4112,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,10 +4129,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4137,6 +4144,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4158,11 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
+
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4173,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,10 +4190,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4189,6 +4205,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4219,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.52.0
----Next_Part(Tue_Jun__2_13_43_56_2026_572)----
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH v2] Make propgraph object descriptions translatable
@ 2026-06-02 03:07 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-06-02 03:07 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
---
src/backend/catalog/objectaddress.c | 56 +++++++++++++++++++----------
1 file changed, 38 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..9eb574f5ccc 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,16 +4092,16 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tup);
break;
}
@@ -4109,6 +4112,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,10 +4129,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4137,6 +4144,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4158,11 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
+
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4173,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,10 +4190,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4189,6 +4205,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4219,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.52.0
----Next_Part(Tue_Jun__2_13_43_56_2026_572)----
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH v2] Make propgraph object descriptions translatable
@ 2026-06-02 03:07 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-06-02 03:07 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
---
src/backend/catalog/objectaddress.c | 56 +++++++++++++++++++----------
1 file changed, 38 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..9eb574f5ccc 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,16 +4092,16 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tup);
break;
}
@@ -4109,6 +4112,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,10 +4129,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4137,6 +4144,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4158,11 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
+
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4173,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,10 +4190,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4189,6 +4205,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4219,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.52.0
----Next_Part(Tue_Jun__2_13_43_56_2026_572)----
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH v2] Make propgraph object descriptions translatable
@ 2026-06-02 03:07 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-06-02 03:07 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
---
src/backend/catalog/objectaddress.c | 56 +++++++++++++++++++----------
1 file changed, 38 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..9eb574f5ccc 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,16 +4092,16 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tup);
break;
}
@@ -4109,6 +4112,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,10 +4129,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4137,6 +4144,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4158,11 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
+
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4173,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,10 +4190,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4189,6 +4205,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4219,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.52.0
----Next_Part(Tue_Jun__2_13_43_56_2026_572)----
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH v2] Make propgraph object descriptions translatable
@ 2026-06-02 03:07 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-06-02 03:07 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
---
src/backend/catalog/objectaddress.c | 56 +++++++++++++++++++----------
1 file changed, 38 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..9eb574f5ccc 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,16 +4092,16 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tup);
break;
}
@@ -4109,6 +4112,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,10 +4129,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4137,6 +4144,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4158,11 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
+
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4173,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,10 +4190,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4189,6 +4205,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4219,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.52.0
----Next_Part(Tue_Jun__2_13_43_56_2026_572)----
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH v2] Make propgraph object descriptions translatable
@ 2026-06-02 03:07 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-06-02 03:07 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
---
src/backend/catalog/objectaddress.c | 56 +++++++++++++++++++----------
1 file changed, 38 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..9eb574f5ccc 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,16 +4092,16 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tup);
break;
}
@@ -4109,6 +4112,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,10 +4129,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4137,6 +4144,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4158,11 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
+
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4173,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,10 +4190,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4189,6 +4205,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4219,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.52.0
----Next_Part(Tue_Jun__2_13_43_56_2026_572)----
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH v2] Make propgraph object descriptions translatable
@ 2026-06-02 03:07 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-06-02 03:07 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
---
src/backend/catalog/objectaddress.c | 56 +++++++++++++++++++----------
1 file changed, 38 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..9eb574f5ccc 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,16 +4092,16 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tup);
break;
}
@@ -4109,6 +4112,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,10 +4129,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4137,6 +4144,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4158,11 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
+
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4173,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,10 +4190,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4189,6 +4205,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4219,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.52.0
----Next_Part(Tue_Jun__2_13_43_56_2026_572)----
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH v2] Make propgraph object descriptions translatable
@ 2026-06-02 03:07 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-06-02 03:07 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
---
src/backend/catalog/objectaddress.c | 56 +++++++++++++++++++----------
1 file changed, 38 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..9eb574f5ccc 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,16 +4092,16 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tup);
break;
}
@@ -4109,6 +4112,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,10 +4129,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4137,6 +4144,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4158,11 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
+
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4173,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,10 +4190,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4189,6 +4205,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4219,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.52.0
----Next_Part(Tue_Jun__2_13_43_56_2026_572)----
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH v2] Make propgraph object descriptions translatable
@ 2026-06-02 03:07 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-06-02 03:07 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
---
src/backend/catalog/objectaddress.c | 56 +++++++++++++++++++----------
1 file changed, 38 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..9eb574f5ccc 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,16 +4092,16 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tup);
break;
}
@@ -4109,6 +4112,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,10 +4129,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4137,6 +4144,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4158,11 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
+
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4173,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,10 +4190,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4189,6 +4205,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4219,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.52.0
----Next_Part(Tue_Jun__2_13_43_56_2026_572)----
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH v2] Make propgraph object descriptions translatable
@ 2026-06-02 03:07 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-06-02 03:07 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
---
src/backend/catalog/objectaddress.c | 56 +++++++++++++++++++----------
1 file changed, 38 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..9eb574f5ccc 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,16 +4092,16 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tup);
break;
}
@@ -4109,6 +4112,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,10 +4129,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4137,6 +4144,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4158,11 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
+
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4173,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,10 +4190,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4189,6 +4205,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4219,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.52.0
----Next_Part(Tue_Jun__2_13_43_56_2026_572)----
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH v2] Make propgraph object descriptions translatable
@ 2026-06-02 03:07 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-06-02 03:07 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
---
src/backend/catalog/objectaddress.c | 56 +++++++++++++++++++----------
1 file changed, 38 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..9eb574f5ccc 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,16 +4092,16 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tup);
break;
}
@@ -4109,6 +4112,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,10 +4129,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4137,6 +4144,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4158,11 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
+
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4173,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,10 +4190,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4189,6 +4205,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4219,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.52.0
----Next_Part(Tue_Jun__2_13_43_56_2026_572)----
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH v2] Make propgraph object descriptions translatable
@ 2026-06-02 03:07 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-06-02 03:07 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
---
src/backend/catalog/objectaddress.c | 56 +++++++++++++++++++----------
1 file changed, 38 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..9eb574f5ccc 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,16 +4092,16 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tup);
break;
}
@@ -4109,6 +4112,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,10 +4129,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4137,6 +4144,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4158,11 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
+
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4173,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,10 +4190,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4189,6 +4205,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4219,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.52.0
----Next_Part(Tue_Jun__2_13_43_56_2026_572)----
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH v2] Make propgraph object descriptions translatable
@ 2026-06-02 03:07 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-06-02 03:07 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
---
src/backend/catalog/objectaddress.c | 56 +++++++++++++++++++----------
1 file changed, 38 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..9eb574f5ccc 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,16 +4092,16 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tup);
break;
}
@@ -4109,6 +4112,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,10 +4129,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4137,6 +4144,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4158,11 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
+
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4173,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,10 +4190,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4189,6 +4205,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4219,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.52.0
----Next_Part(Tue_Jun__2_13_43_56_2026_572)----
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH v2] Make propgraph object descriptions translatable
@ 2026-06-02 03:07 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-06-02 03:07 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
---
src/backend/catalog/objectaddress.c | 56 +++++++++++++++++++----------
1 file changed, 38 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..9eb574f5ccc 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,16 +4092,16 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tup);
break;
}
@@ -4109,6 +4112,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,10 +4129,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4137,6 +4144,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4158,11 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
+
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4173,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,10 +4190,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4189,6 +4205,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4219,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.52.0
----Next_Part(Tue_Jun__2_13_43_56_2026_572)----
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH v2] Make propgraph object descriptions translatable
@ 2026-06-02 03:07 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-06-02 03:07 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
---
src/backend/catalog/objectaddress.c | 56 +++++++++++++++++++----------
1 file changed, 38 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..9eb574f5ccc 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,16 +4092,16 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tup);
break;
}
@@ -4109,6 +4112,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,10 +4129,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4137,6 +4144,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4158,11 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
+
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4173,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,10 +4190,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4189,6 +4205,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4219,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.52.0
----Next_Part(Tue_Jun__2_13_43_56_2026_572)----
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH v2] Make propgraph object descriptions translatable
@ 2026-06-02 03:07 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-06-02 03:07 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
---
src/backend/catalog/objectaddress.c | 56 +++++++++++++++++++----------
1 file changed, 38 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..9eb574f5ccc 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,16 +4092,16 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tup);
break;
}
@@ -4109,6 +4112,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,10 +4129,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4137,6 +4144,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4158,11 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
+
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4173,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,10 +4190,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4189,6 +4205,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4219,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.52.0
----Next_Part(Tue_Jun__2_13_43_56_2026_572)----
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH v2] Make propgraph object descriptions translatable
@ 2026-06-02 03:07 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-06-02 03:07 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
---
src/backend/catalog/objectaddress.c | 56 +++++++++++++++++++----------
1 file changed, 38 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..9eb574f5ccc 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,16 +4092,16 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tup);
break;
}
@@ -4109,6 +4112,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,10 +4129,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4137,6 +4144,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4158,11 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
+
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4173,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,10 +4190,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4189,6 +4205,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4219,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.52.0
----Next_Part(Tue_Jun__2_13_43_56_2026_572)----
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH v2] Make propgraph object descriptions translatable
@ 2026-06-02 03:07 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-06-02 03:07 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
---
src/backend/catalog/objectaddress.c | 56 +++++++++++++++++++----------
1 file changed, 38 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..9eb574f5ccc 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,16 +4092,16 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tup);
break;
}
@@ -4109,6 +4112,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,10 +4129,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4137,6 +4144,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4158,11 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
+
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4173,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,10 +4190,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4189,6 +4205,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4219,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.52.0
----Next_Part(Tue_Jun__2_13_43_56_2026_572)----
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH v2] Make propgraph object descriptions translatable
@ 2026-06-02 03:07 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-06-02 03:07 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
---
src/backend/catalog/objectaddress.c | 56 +++++++++++++++++++----------
1 file changed, 38 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..9eb574f5ccc 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,16 +4092,16 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tup);
break;
}
@@ -4109,6 +4112,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,10 +4129,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4137,6 +4144,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4158,11 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
+
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4173,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,10 +4190,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4189,6 +4205,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4219,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.52.0
----Next_Part(Tue_Jun__2_13_43_56_2026_572)----
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH v2] Make propgraph object descriptions translatable
@ 2026-06-02 03:07 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-06-02 03:07 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
---
src/backend/catalog/objectaddress.c | 56 +++++++++++++++++++----------
1 file changed, 38 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..9eb574f5ccc 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,16 +4092,16 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tup);
break;
}
@@ -4109,6 +4112,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,10 +4129,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4137,6 +4144,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4158,11 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
+
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4173,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,10 +4190,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4189,6 +4205,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4219,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.52.0
----Next_Part(Tue_Jun__2_13_43_56_2026_572)----
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH v2] Make propgraph object descriptions translatable
@ 2026-06-02 03:07 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-06-02 03:07 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
---
src/backend/catalog/objectaddress.c | 56 +++++++++++++++++++----------
1 file changed, 38 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..9eb574f5ccc 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,16 +4092,16 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tup);
break;
}
@@ -4109,6 +4112,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,10 +4129,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4137,6 +4144,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4158,11 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
+
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4173,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,10 +4190,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4189,6 +4205,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4219,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.52.0
----Next_Part(Tue_Jun__2_13_43_56_2026_572)----
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH v2] Make propgraph object descriptions translatable
@ 2026-06-02 03:07 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-06-02 03:07 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
---
src/backend/catalog/objectaddress.c | 56 +++++++++++++++++++----------
1 file changed, 38 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..9eb574f5ccc 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,16 +4092,16 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tup);
break;
}
@@ -4109,6 +4112,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,10 +4129,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4137,6 +4144,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4158,11 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
+
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4173,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,10 +4190,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4189,6 +4205,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4219,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.52.0
----Next_Part(Tue_Jun__2_13_43_56_2026_572)----
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH v2] Make propgraph object descriptions translatable
@ 2026-06-02 03:07 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-06-02 03:07 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
---
src/backend/catalog/objectaddress.c | 56 +++++++++++++++++++----------
1 file changed, 38 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..9eb574f5ccc 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,16 +4092,16 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tup);
break;
}
@@ -4109,6 +4112,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,10 +4129,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4137,6 +4144,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4158,11 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
+
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4173,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,10 +4190,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4189,6 +4205,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4219,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.52.0
----Next_Part(Tue_Jun__2_13_43_56_2026_572)----
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH v2] Make propgraph object descriptions translatable
@ 2026-06-02 03:07 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-06-02 03:07 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
---
src/backend/catalog/objectaddress.c | 56 +++++++++++++++++++----------
1 file changed, 38 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..9eb574f5ccc 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,16 +4092,16 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tup);
break;
}
@@ -4109,6 +4112,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,10 +4129,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4137,6 +4144,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4158,11 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
+
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4173,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,10 +4190,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4189,6 +4205,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4219,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.52.0
----Next_Part(Tue_Jun__2_13_43_56_2026_572)----
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH v2] Make propgraph object descriptions translatable
@ 2026-06-02 03:07 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-06-02 03:07 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
---
src/backend/catalog/objectaddress.c | 56 +++++++++++++++++++----------
1 file changed, 38 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..9eb574f5ccc 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,16 +4092,16 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tup);
break;
}
@@ -4109,6 +4112,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,10 +4129,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4137,6 +4144,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4158,11 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
+
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4173,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,10 +4190,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4189,6 +4205,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4219,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.52.0
----Next_Part(Tue_Jun__2_13_43_56_2026_572)----
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH v2] Make propgraph object descriptions translatable
@ 2026-06-02 03:07 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-06-02 03:07 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
---
src/backend/catalog/objectaddress.c | 56 +++++++++++++++++++----------
1 file changed, 38 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..9eb574f5ccc 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,16 +4092,16 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tup);
break;
}
@@ -4109,6 +4112,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,10 +4129,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4137,6 +4144,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4158,11 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
+
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4173,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,10 +4190,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4189,6 +4205,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4219,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.52.0
----Next_Part(Tue_Jun__2_13_43_56_2026_572)----
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH v2] Make propgraph object descriptions translatable
@ 2026-06-02 03:07 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-06-02 03:07 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
---
src/backend/catalog/objectaddress.c | 56 +++++++++++++++++++----------
1 file changed, 38 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..9eb574f5ccc 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,16 +4092,16 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tup);
break;
}
@@ -4109,6 +4112,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,10 +4129,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4137,6 +4144,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4158,11 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
+
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4173,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,10 +4190,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4189,6 +4205,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4219,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.52.0
----Next_Part(Tue_Jun__2_13_43_56_2026_572)----
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH v2] Make propgraph object descriptions translatable
@ 2026-06-02 03:07 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-06-02 03:07 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
---
src/backend/catalog/objectaddress.c | 56 +++++++++++++++++++----------
1 file changed, 38 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..9eb574f5ccc 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,16 +4092,16 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tup);
break;
}
@@ -4109,6 +4112,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,10 +4129,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4137,6 +4144,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4158,11 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
+
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4173,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,10 +4190,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4189,6 +4205,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4219,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.52.0
----Next_Part(Tue_Jun__2_13_43_56_2026_572)----
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH v2] Make propgraph object descriptions translatable
@ 2026-06-02 03:07 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-06-02 03:07 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
---
src/backend/catalog/objectaddress.c | 56 +++++++++++++++++++----------
1 file changed, 38 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..9eb574f5ccc 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,16 +4092,16 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tup);
break;
}
@@ -4109,6 +4112,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,10 +4129,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4137,6 +4144,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4158,11 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
+
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4173,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,10 +4190,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4189,6 +4205,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4219,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.52.0
----Next_Part(Tue_Jun__2_13_43_56_2026_572)----
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH v2] Make propgraph object descriptions translatable
@ 2026-06-02 03:07 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-06-02 03:07 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
---
src/backend/catalog/objectaddress.c | 56 +++++++++++++++++++----------
1 file changed, 38 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..9eb574f5ccc 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,16 +4092,16 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tup);
break;
}
@@ -4109,6 +4112,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,10 +4129,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4137,6 +4144,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4158,11 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
+
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4173,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,10 +4190,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4189,6 +4205,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4219,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.52.0
----Next_Part(Tue_Jun__2_13_43_56_2026_572)----
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH v2] Make propgraph object descriptions translatable
@ 2026-06-02 03:07 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-06-02 03:07 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
---
src/backend/catalog/objectaddress.c | 56 +++++++++++++++++++----------
1 file changed, 38 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..9eb574f5ccc 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,16 +4092,16 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tup);
break;
}
@@ -4109,6 +4112,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,10 +4129,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4137,6 +4144,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4158,11 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
+
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4173,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,10 +4190,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4189,6 +4205,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4219,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.52.0
----Next_Part(Tue_Jun__2_13_43_56_2026_572)----
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH v2] Make propgraph object descriptions translatable
@ 2026-06-02 03:07 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-06-02 03:07 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
---
src/backend/catalog/objectaddress.c | 56 +++++++++++++++++++----------
1 file changed, 38 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..9eb574f5ccc 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,16 +4092,16 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tup);
break;
}
@@ -4109,6 +4112,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,10 +4129,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4137,6 +4144,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4158,11 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
+
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4173,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,10 +4190,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4189,6 +4205,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4219,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.52.0
----Next_Part(Tue_Jun__2_13_43_56_2026_572)----
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH v2] Make propgraph object descriptions translatable
@ 2026-06-02 03:07 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-06-02 03:07 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
---
src/backend/catalog/objectaddress.c | 56 +++++++++++++++++++----------
1 file changed, 38 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..9eb574f5ccc 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,16 +4092,16 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tup);
break;
}
@@ -4109,6 +4112,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,10 +4129,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4137,6 +4144,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4158,11 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
+
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4173,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,10 +4190,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4189,6 +4205,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4219,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.52.0
----Next_Part(Tue_Jun__2_13_43_56_2026_572)----
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH v2] Make propgraph object descriptions translatable
@ 2026-06-02 03:07 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-06-02 03:07 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
---
src/backend/catalog/objectaddress.c | 56 +++++++++++++++++++----------
1 file changed, 38 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..9eb574f5ccc 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,16 +4092,16 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tup);
break;
}
@@ -4109,6 +4112,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,10 +4129,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4137,6 +4144,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4158,11 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
+
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4173,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,10 +4190,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4189,6 +4205,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4219,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.52.0
----Next_Part(Tue_Jun__2_13_43_56_2026_572)----
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH v2] Make propgraph object descriptions translatable
@ 2026-06-02 03:07 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-06-02 03:07 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
---
src/backend/catalog/objectaddress.c | 56 +++++++++++++++++++----------
1 file changed, 38 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..9eb574f5ccc 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,16 +4092,16 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tup);
break;
}
@@ -4109,6 +4112,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,10 +4129,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4137,6 +4144,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4158,11 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
+
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4173,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,10 +4190,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4189,6 +4205,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4219,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.52.0
----Next_Part(Tue_Jun__2_13_43_56_2026_572)----
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH v2] Make propgraph object descriptions translatable
@ 2026-06-02 03:07 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-06-02 03:07 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
---
src/backend/catalog/objectaddress.c | 56 +++++++++++++++++++----------
1 file changed, 38 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..9eb574f5ccc 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,16 +4092,16 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tup);
break;
}
@@ -4109,6 +4112,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,10 +4129,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4137,6 +4144,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4158,11 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
+
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4173,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,10 +4190,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4189,6 +4205,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4219,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.52.0
----Next_Part(Tue_Jun__2_13_43_56_2026_572)----
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH v2] Make propgraph object descriptions translatable
@ 2026-06-02 03:07 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-06-02 03:07 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
---
src/backend/catalog/objectaddress.c | 56 +++++++++++++++++++----------
1 file changed, 38 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..9eb574f5ccc 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,16 +4092,16 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tup);
break;
}
@@ -4109,6 +4112,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,10 +4129,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4137,6 +4144,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4158,11 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
+
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4173,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,10 +4190,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4189,6 +4205,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4219,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.52.0
----Next_Part(Tue_Jun__2_13_43_56_2026_572)----
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH v2] Make propgraph object descriptions translatable
@ 2026-06-02 03:07 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-06-02 03:07 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
---
src/backend/catalog/objectaddress.c | 56 +++++++++++++++++++----------
1 file changed, 38 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..9eb574f5ccc 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,16 +4092,16 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tup);
break;
}
@@ -4109,6 +4112,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,10 +4129,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4137,6 +4144,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4158,11 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
+
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4173,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,10 +4190,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4189,6 +4205,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4219,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.52.0
----Next_Part(Tue_Jun__2_13_43_56_2026_572)----
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH v2] Make propgraph object descriptions translatable
@ 2026-06-02 03:07 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-06-02 03:07 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
---
src/backend/catalog/objectaddress.c | 56 +++++++++++++++++++----------
1 file changed, 38 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..9eb574f5ccc 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,16 +4092,16 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tup);
break;
}
@@ -4109,6 +4112,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,10 +4129,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4137,6 +4144,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4158,11 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
+
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4173,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,10 +4190,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4189,6 +4205,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4219,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.52.0
----Next_Part(Tue_Jun__2_13_43_56_2026_572)----
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH v2] Make propgraph object descriptions translatable
@ 2026-06-02 03:07 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-06-02 03:07 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
---
src/backend/catalog/objectaddress.c | 56 +++++++++++++++++++----------
1 file changed, 38 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..9eb574f5ccc 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,16 +4092,16 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tup);
break;
}
@@ -4109,6 +4112,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,10 +4129,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4137,6 +4144,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4158,11 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
+
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4173,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,10 +4190,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4189,6 +4205,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4219,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.52.0
----Next_Part(Tue_Jun__2_13_43_56_2026_572)----
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH v2] Make propgraph object descriptions translatable
@ 2026-06-02 03:07 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-06-02 03:07 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
---
src/backend/catalog/objectaddress.c | 56 +++++++++++++++++++----------
1 file changed, 38 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..9eb574f5ccc 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,16 +4092,16 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tup);
break;
}
@@ -4109,6 +4112,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,10 +4129,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4137,6 +4144,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4158,11 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
+
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4173,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,10 +4190,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4189,6 +4205,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4219,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.52.0
----Next_Part(Tue_Jun__2_13_43_56_2026_572)----
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH v2] Make propgraph object descriptions translatable
@ 2026-06-02 03:07 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-06-02 03:07 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
---
src/backend/catalog/objectaddress.c | 56 +++++++++++++++++++----------
1 file changed, 38 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..9eb574f5ccc 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,16 +4092,16 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tup);
break;
}
@@ -4109,6 +4112,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,10 +4129,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4137,6 +4144,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4158,11 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
+
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4173,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,10 +4190,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4189,6 +4205,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4219,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.52.0
----Next_Part(Tue_Jun__2_13_43_56_2026_572)----
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH v2] Make propgraph object descriptions translatable
@ 2026-06-02 03:07 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-06-02 03:07 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
---
src/backend/catalog/objectaddress.c | 56 +++++++++++++++++++----------
1 file changed, 38 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..9eb574f5ccc 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,16 +4092,16 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tup);
break;
}
@@ -4109,6 +4112,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,10 +4129,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4137,6 +4144,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4158,11 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
+
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4173,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,10 +4190,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4189,6 +4205,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4219,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.52.0
----Next_Part(Tue_Jun__2_13_43_56_2026_572)----
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH v2] Make propgraph object descriptions translatable
@ 2026-06-02 03:07 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-06-02 03:07 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
---
src/backend/catalog/objectaddress.c | 56 +++++++++++++++++++----------
1 file changed, 38 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..9eb574f5ccc 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,16 +4092,16 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tup);
break;
}
@@ -4109,6 +4112,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,10 +4129,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4137,6 +4144,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4158,11 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
+
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4173,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,10 +4190,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4189,6 +4205,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4219,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.52.0
----Next_Part(Tue_Jun__2_13_43_56_2026_572)----
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH v2] Make propgraph object descriptions translatable
@ 2026-06-02 03:07 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-06-02 03:07 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
---
src/backend/catalog/objectaddress.c | 56 +++++++++++++++++++----------
1 file changed, 38 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..9eb574f5ccc 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,16 +4092,16 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tup);
break;
}
@@ -4109,6 +4112,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,10 +4129,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4137,6 +4144,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4158,11 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
+
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4173,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,10 +4190,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4189,6 +4205,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4219,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.52.0
----Next_Part(Tue_Jun__2_13_43_56_2026_572)----
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH v2] Make propgraph object descriptions translatable
@ 2026-06-02 03:07 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-06-02 03:07 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
---
src/backend/catalog/objectaddress.c | 56 +++++++++++++++++++----------
1 file changed, 38 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..9eb574f5ccc 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,16 +4092,16 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tup);
break;
}
@@ -4109,6 +4112,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,10 +4129,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4137,6 +4144,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4158,11 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
+
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4173,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,10 +4190,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4189,6 +4205,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4219,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.52.0
----Next_Part(Tue_Jun__2_13_43_56_2026_572)----
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH v2] Make propgraph object descriptions translatable
@ 2026-06-02 03:07 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-06-02 03:07 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
---
src/backend/catalog/objectaddress.c | 56 +++++++++++++++++++----------
1 file changed, 38 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..9eb574f5ccc 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,16 +4092,16 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tup);
break;
}
@@ -4109,6 +4112,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,10 +4129,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4137,6 +4144,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4158,11 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
+
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4173,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,10 +4190,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4189,6 +4205,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4219,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.52.0
----Next_Part(Tue_Jun__2_13_43_56_2026_572)----
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH v2] Make propgraph object descriptions translatable
@ 2026-06-02 03:07 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-06-02 03:07 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
---
src/backend/catalog/objectaddress.c | 56 +++++++++++++++++++----------
1 file changed, 38 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..9eb574f5ccc 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,16 +4092,16 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tup);
break;
}
@@ -4109,6 +4112,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,10 +4129,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4137,6 +4144,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4158,11 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
+
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4173,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,10 +4190,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4189,6 +4205,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4219,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.52.0
----Next_Part(Tue_Jun__2_13_43_56_2026_572)----
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH v2] Make propgraph object descriptions translatable
@ 2026-06-02 03:07 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-06-02 03:07 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
---
src/backend/catalog/objectaddress.c | 56 +++++++++++++++++++----------
1 file changed, 38 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..9eb574f5ccc 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,16 +4092,16 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tup);
break;
}
@@ -4109,6 +4112,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,10 +4129,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4137,6 +4144,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4158,11 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
+
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4173,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,10 +4190,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4189,6 +4205,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4219,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.52.0
----Next_Part(Tue_Jun__2_13_43_56_2026_572)----
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH v2] Make propgraph object descriptions translatable
@ 2026-06-02 03:07 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-06-02 03:07 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
---
src/backend/catalog/objectaddress.c | 56 +++++++++++++++++++----------
1 file changed, 38 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..9eb574f5ccc 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,16 +4092,16 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tup);
break;
}
@@ -4109,6 +4112,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,10 +4129,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4137,6 +4144,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4158,11 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
+
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4173,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,10 +4190,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4189,6 +4205,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4219,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.52.0
----Next_Part(Tue_Jun__2_13_43_56_2026_572)----
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH v2] Make propgraph object descriptions translatable
@ 2026-06-02 03:07 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-06-02 03:07 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
---
src/backend/catalog/objectaddress.c | 56 +++++++++++++++++++----------
1 file changed, 38 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..9eb574f5ccc 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,16 +4092,16 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tup);
break;
}
@@ -4109,6 +4112,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,10 +4129,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4137,6 +4144,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4158,11 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
+
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4173,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,10 +4190,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4189,6 +4205,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4219,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.52.0
----Next_Part(Tue_Jun__2_13_43_56_2026_572)----
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH v2] Make propgraph object descriptions translatable
@ 2026-06-02 03:07 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-06-02 03:07 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
---
src/backend/catalog/objectaddress.c | 56 +++++++++++++++++++----------
1 file changed, 38 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..9eb574f5ccc 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,16 +4092,16 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tup);
break;
}
@@ -4109,6 +4112,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,10 +4129,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4137,6 +4144,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4158,11 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
+
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4173,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,10 +4190,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4189,6 +4205,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4219,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.52.0
----Next_Part(Tue_Jun__2_13_43_56_2026_572)----
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH v2] Make propgraph object descriptions translatable
@ 2026-06-02 03:07 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-06-02 03:07 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
---
src/backend/catalog/objectaddress.c | 56 +++++++++++++++++++----------
1 file changed, 38 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..9eb574f5ccc 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,16 +4092,16 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tup);
break;
}
@@ -4109,6 +4112,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,10 +4129,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4137,6 +4144,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4158,11 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
+
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4173,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,10 +4190,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4189,6 +4205,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4219,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.52.0
----Next_Part(Tue_Jun__2_13_43_56_2026_572)----
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH v2] Make propgraph object descriptions translatable
@ 2026-06-02 03:07 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-06-02 03:07 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
---
src/backend/catalog/objectaddress.c | 56 +++++++++++++++++++----------
1 file changed, 38 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..9eb574f5ccc 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,16 +4092,16 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tup);
break;
}
@@ -4109,6 +4112,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,10 +4129,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4137,6 +4144,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4158,11 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
+
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4173,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,10 +4190,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4189,6 +4205,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4219,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.52.0
----Next_Part(Tue_Jun__2_13_43_56_2026_572)----
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH v2] Make propgraph object descriptions translatable
@ 2026-06-02 03:07 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-06-02 03:07 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
---
src/backend/catalog/objectaddress.c | 56 +++++++++++++++++++----------
1 file changed, 38 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..9eb574f5ccc 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,16 +4092,16 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tup);
break;
}
@@ -4109,6 +4112,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,10 +4129,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4137,6 +4144,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4158,11 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
+
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4173,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,10 +4190,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4189,6 +4205,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4219,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.52.0
----Next_Part(Tue_Jun__2_13_43_56_2026_572)----
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH v2] Make propgraph object descriptions translatable
@ 2026-06-02 03:07 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-06-02 03:07 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
---
src/backend/catalog/objectaddress.c | 56 +++++++++++++++++++----------
1 file changed, 38 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..9eb574f5ccc 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,16 +4092,16 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tup);
break;
}
@@ -4109,6 +4112,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,10 +4129,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4137,6 +4144,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4158,11 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
+
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4173,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,10 +4190,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4189,6 +4205,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4219,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.52.0
----Next_Part(Tue_Jun__2_13_43_56_2026_572)----
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH v2] Make propgraph object descriptions translatable
@ 2026-06-02 03:07 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-06-02 03:07 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
---
src/backend/catalog/objectaddress.c | 56 +++++++++++++++++++----------
1 file changed, 38 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..9eb574f5ccc 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,16 +4092,16 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tup);
break;
}
@@ -4109,6 +4112,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,10 +4129,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4137,6 +4144,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4158,11 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
+
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4173,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,10 +4190,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4189,6 +4205,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4219,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.52.0
----Next_Part(Tue_Jun__2_13_43_56_2026_572)----
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH v2] Make propgraph object descriptions translatable
@ 2026-06-02 03:07 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-06-02 03:07 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
---
src/backend/catalog/objectaddress.c | 56 +++++++++++++++++++----------
1 file changed, 38 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..9eb574f5ccc 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,16 +4092,16 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tup);
break;
}
@@ -4109,6 +4112,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,10 +4129,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4137,6 +4144,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4158,11 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
+
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4173,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,10 +4190,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4189,6 +4205,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4219,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.52.0
----Next_Part(Tue_Jun__2_13_43_56_2026_572)----
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH v2] Make propgraph object descriptions translatable
@ 2026-06-02 03:07 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-06-02 03:07 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
---
src/backend/catalog/objectaddress.c | 56 +++++++++++++++++++----------
1 file changed, 38 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..9eb574f5ccc 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,16 +4092,16 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tup);
break;
}
@@ -4109,6 +4112,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,10 +4129,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4137,6 +4144,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4158,11 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
+
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4173,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,10 +4190,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4189,6 +4205,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4219,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.52.0
----Next_Part(Tue_Jun__2_13_43_56_2026_572)----
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH v2] Make propgraph object descriptions translatable
@ 2026-06-02 03:07 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-06-02 03:07 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
---
src/backend/catalog/objectaddress.c | 56 +++++++++++++++++++----------
1 file changed, 38 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..9eb574f5ccc 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,16 +4092,16 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tup);
break;
}
@@ -4109,6 +4112,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,10 +4129,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4137,6 +4144,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4158,11 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
+
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4173,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,10 +4190,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4189,6 +4205,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4219,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.52.0
----Next_Part(Tue_Jun__2_13_43_56_2026_572)----
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH v2] Make propgraph object descriptions translatable
@ 2026-06-02 03:07 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-06-02 03:07 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
---
src/backend/catalog/objectaddress.c | 56 +++++++++++++++++++----------
1 file changed, 38 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..9eb574f5ccc 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,16 +4092,16 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tup);
break;
}
@@ -4109,6 +4112,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,10 +4129,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4137,6 +4144,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4158,11 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
+
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4173,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,10 +4190,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4189,6 +4205,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4219,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.52.0
----Next_Part(Tue_Jun__2_13_43_56_2026_572)----
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH v2] Make propgraph object descriptions translatable
@ 2026-06-02 03:07 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-06-02 03:07 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
---
src/backend/catalog/objectaddress.c | 56 +++++++++++++++++++----------
1 file changed, 38 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..9eb574f5ccc 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,16 +4092,16 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tup);
break;
}
@@ -4109,6 +4112,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,10 +4129,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4137,6 +4144,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4158,11 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
+
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4173,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,10 +4190,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4189,6 +4205,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4219,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.52.0
----Next_Part(Tue_Jun__2_13_43_56_2026_572)----
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH v2] Make propgraph object descriptions translatable
@ 2026-06-02 03:07 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-06-02 03:07 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
---
src/backend/catalog/objectaddress.c | 56 +++++++++++++++++++----------
1 file changed, 38 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..9eb574f5ccc 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,16 +4092,16 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tup);
break;
}
@@ -4109,6 +4112,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,10 +4129,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4137,6 +4144,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4158,11 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
+
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4173,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,10 +4190,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4189,6 +4205,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4219,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.52.0
----Next_Part(Tue_Jun__2_13_43_56_2026_572)----
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH v2] Make propgraph object descriptions translatable
@ 2026-06-02 03:07 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-06-02 03:07 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
---
src/backend/catalog/objectaddress.c | 56 +++++++++++++++++++----------
1 file changed, 38 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..9eb574f5ccc 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,16 +4092,16 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tup);
break;
}
@@ -4109,6 +4112,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,10 +4129,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4137,6 +4144,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4158,11 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
+
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4173,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,10 +4190,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4189,6 +4205,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4219,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.52.0
----Next_Part(Tue_Jun__2_13_43_56_2026_572)----
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH v2] Make propgraph object descriptions translatable
@ 2026-06-02 03:07 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-06-02 03:07 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
---
src/backend/catalog/objectaddress.c | 56 +++++++++++++++++++----------
1 file changed, 38 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..9eb574f5ccc 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,16 +4092,16 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tup);
break;
}
@@ -4109,6 +4112,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,10 +4129,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4137,6 +4144,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4158,11 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
+
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4173,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,10 +4190,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4189,6 +4205,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4219,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.52.0
----Next_Part(Tue_Jun__2_13_43_56_2026_572)----
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH v2] Make propgraph object descriptions translatable
@ 2026-06-02 03:07 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-06-02 03:07 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
---
src/backend/catalog/objectaddress.c | 56 +++++++++++++++++++----------
1 file changed, 38 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..9eb574f5ccc 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,16 +4092,16 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tup);
break;
}
@@ -4109,6 +4112,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,10 +4129,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4137,6 +4144,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4158,11 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
+
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4173,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,10 +4190,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4189,6 +4205,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4219,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.52.0
----Next_Part(Tue_Jun__2_13_43_56_2026_572)----
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH v2] Make propgraph object descriptions translatable
@ 2026-06-02 03:07 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-06-02 03:07 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
---
src/backend/catalog/objectaddress.c | 56 +++++++++++++++++++----------
1 file changed, 38 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..9eb574f5ccc 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,16 +4092,16 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tup);
break;
}
@@ -4109,6 +4112,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,10 +4129,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4137,6 +4144,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4158,11 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
+
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4173,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,10 +4190,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4189,6 +4205,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4219,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.52.0
----Next_Part(Tue_Jun__2_13_43_56_2026_572)----
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH v2] Make propgraph object descriptions translatable
@ 2026-06-02 03:07 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-06-02 03:07 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
---
src/backend/catalog/objectaddress.c | 56 +++++++++++++++++++----------
1 file changed, 38 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..9eb574f5ccc 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,16 +4092,16 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tup);
break;
}
@@ -4109,6 +4112,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,10 +4129,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4137,6 +4144,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4158,11 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
+
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4173,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,10 +4190,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4189,6 +4205,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4219,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.52.0
----Next_Part(Tue_Jun__2_13_43_56_2026_572)----
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH v2] Make propgraph object descriptions translatable
@ 2026-06-02 03:07 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-06-02 03:07 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
---
src/backend/catalog/objectaddress.c | 56 +++++++++++++++++++----------
1 file changed, 38 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..9eb574f5ccc 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,16 +4092,16 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tup);
break;
}
@@ -4109,6 +4112,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,10 +4129,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4137,6 +4144,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4158,11 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
+
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4173,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,10 +4190,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4189,6 +4205,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4219,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.52.0
----Next_Part(Tue_Jun__2_13_43_56_2026_572)----
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH v2] Make propgraph object descriptions translatable
@ 2026-06-02 03:07 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-06-02 03:07 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
---
src/backend/catalog/objectaddress.c | 56 +++++++++++++++++++----------
1 file changed, 38 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..9eb574f5ccc 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,16 +4092,16 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tup);
break;
}
@@ -4109,6 +4112,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,10 +4129,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4137,6 +4144,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4158,11 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
+
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4173,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,10 +4190,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4189,6 +4205,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4219,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.52.0
----Next_Part(Tue_Jun__2_13_43_56_2026_572)----
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH v2] Make propgraph object descriptions translatable
@ 2026-06-02 03:07 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-06-02 03:07 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
---
src/backend/catalog/objectaddress.c | 56 +++++++++++++++++++----------
1 file changed, 38 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..9eb574f5ccc 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,16 +4092,16 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tup);
break;
}
@@ -4109,6 +4112,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,10 +4129,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4137,6 +4144,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4158,11 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
+
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4173,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,10 +4190,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4189,6 +4205,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4219,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.52.0
----Next_Part(Tue_Jun__2_13_43_56_2026_572)----
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH v2] Make propgraph object descriptions translatable
@ 2026-06-02 03:07 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-06-02 03:07 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
---
src/backend/catalog/objectaddress.c | 56 +++++++++++++++++++----------
1 file changed, 38 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..9eb574f5ccc 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,16 +4092,16 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tup);
break;
}
@@ -4109,6 +4112,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,10 +4129,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4137,6 +4144,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4158,11 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
+
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4173,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,10 +4190,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4189,6 +4205,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4219,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.52.0
----Next_Part(Tue_Jun__2_13_43_56_2026_572)----
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH v2] Make propgraph object descriptions translatable
@ 2026-06-02 03:07 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-06-02 03:07 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
---
src/backend/catalog/objectaddress.c | 56 +++++++++++++++++++----------
1 file changed, 38 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..9eb574f5ccc 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,16 +4092,16 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tup);
break;
}
@@ -4109,6 +4112,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,10 +4129,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4137,6 +4144,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4158,11 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
+
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4173,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,10 +4190,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4189,6 +4205,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4219,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.52.0
----Next_Part(Tue_Jun__2_13_43_56_2026_572)----
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH v2] Make propgraph object descriptions translatable
@ 2026-06-02 03:07 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-06-02 03:07 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
---
src/backend/catalog/objectaddress.c | 56 +++++++++++++++++++----------
1 file changed, 38 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..9eb574f5ccc 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,16 +4092,16 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tup);
break;
}
@@ -4109,6 +4112,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,10 +4129,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4137,6 +4144,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4158,11 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
+
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4173,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,10 +4190,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4189,6 +4205,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4219,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.52.0
----Next_Part(Tue_Jun__2_13_43_56_2026_572)----
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH v2] Make propgraph object descriptions translatable
@ 2026-06-02 03:07 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-06-02 03:07 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
---
src/backend/catalog/objectaddress.c | 56 +++++++++++++++++++----------
1 file changed, 38 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..9eb574f5ccc 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,16 +4092,16 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tup);
break;
}
@@ -4109,6 +4112,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,10 +4129,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4137,6 +4144,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4158,11 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
+
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4173,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,10 +4190,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4189,6 +4205,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4219,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.52.0
----Next_Part(Tue_Jun__2_13_43_56_2026_572)----
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH v2] Make propgraph object descriptions translatable
@ 2026-06-02 03:07 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-06-02 03:07 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
---
src/backend/catalog/objectaddress.c | 56 +++++++++++++++++++----------
1 file changed, 38 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..9eb574f5ccc 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,16 +4092,16 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tup);
break;
}
@@ -4109,6 +4112,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,10 +4129,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4137,6 +4144,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4158,11 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
+
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4173,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,10 +4190,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4189,6 +4205,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4219,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.52.0
----Next_Part(Tue_Jun__2_13_43_56_2026_572)----
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH v2] Make propgraph object descriptions translatable
@ 2026-06-02 03:07 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-06-02 03:07 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
---
src/backend/catalog/objectaddress.c | 56 +++++++++++++++++++----------
1 file changed, 38 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..9eb574f5ccc 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,16 +4092,16 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tup);
break;
}
@@ -4109,6 +4112,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,10 +4129,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4137,6 +4144,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4158,11 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
+
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4173,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,10 +4190,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4189,6 +4205,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4219,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.52.0
----Next_Part(Tue_Jun__2_13_43_56_2026_572)----
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH v2] Make propgraph object descriptions translatable
@ 2026-06-02 03:07 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-06-02 03:07 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
---
src/backend/catalog/objectaddress.c | 56 +++++++++++++++++++----------
1 file changed, 38 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..9eb574f5ccc 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,16 +4092,16 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tup);
break;
}
@@ -4109,6 +4112,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,10 +4129,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4137,6 +4144,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4158,11 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
+
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4173,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,10 +4190,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4189,6 +4205,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4219,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.52.0
----Next_Part(Tue_Jun__2_13_43_56_2026_572)----
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH v2] Make propgraph object descriptions translatable
@ 2026-06-02 03:07 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-06-02 03:07 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
---
src/backend/catalog/objectaddress.c | 56 +++++++++++++++++++----------
1 file changed, 38 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..9eb574f5ccc 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,16 +4092,16 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tup);
break;
}
@@ -4109,6 +4112,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,10 +4129,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4137,6 +4144,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4158,11 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
+
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4173,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,10 +4190,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4189,6 +4205,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4219,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.52.0
----Next_Part(Tue_Jun__2_13_43_56_2026_572)----
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH v2] Make propgraph object descriptions translatable
@ 2026-06-02 03:07 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-06-02 03:07 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
---
src/backend/catalog/objectaddress.c | 56 +++++++++++++++++++----------
1 file changed, 38 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..9eb574f5ccc 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,16 +4092,16 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tup);
break;
}
@@ -4109,6 +4112,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,10 +4129,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4137,6 +4144,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4158,11 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
+
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4173,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,10 +4190,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4189,6 +4205,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4219,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.52.0
----Next_Part(Tue_Jun__2_13_43_56_2026_572)----
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH v2] Make propgraph object descriptions translatable
@ 2026-06-02 03:07 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-06-02 03:07 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
---
src/backend/catalog/objectaddress.c | 56 +++++++++++++++++++----------
1 file changed, 38 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..9eb574f5ccc 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,16 +4092,16 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tup);
break;
}
@@ -4109,6 +4112,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,10 +4129,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4137,6 +4144,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4158,11 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
+
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4173,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,10 +4190,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4189,6 +4205,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4219,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.52.0
----Next_Part(Tue_Jun__2_13_43_56_2026_572)----
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH v2] Make propgraph object descriptions translatable
@ 2026-06-02 03:07 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-06-02 03:07 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
---
src/backend/catalog/objectaddress.c | 56 +++++++++++++++++++----------
1 file changed, 38 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..9eb574f5ccc 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,16 +4092,16 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tup);
break;
}
@@ -4109,6 +4112,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,10 +4129,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4137,6 +4144,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4158,11 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
+
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4173,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,10 +4190,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4189,6 +4205,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4219,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.52.0
----Next_Part(Tue_Jun__2_13_43_56_2026_572)----
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH v2] Make propgraph object descriptions translatable
@ 2026-06-02 03:07 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-06-02 03:07 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
---
src/backend/catalog/objectaddress.c | 56 +++++++++++++++++++----------
1 file changed, 38 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..9eb574f5ccc 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,16 +4092,16 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tup);
break;
}
@@ -4109,6 +4112,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,10 +4129,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4137,6 +4144,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4158,11 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
+
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4173,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,10 +4190,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4189,6 +4205,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4219,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.52.0
----Next_Part(Tue_Jun__2_13_43_56_2026_572)----
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH v2] Make propgraph object descriptions translatable
@ 2026-06-02 03:07 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-06-02 03:07 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
---
src/backend/catalog/objectaddress.c | 56 +++++++++++++++++++----------
1 file changed, 38 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..9eb574f5ccc 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,16 +4092,16 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tup);
break;
}
@@ -4109,6 +4112,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,10 +4129,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4137,6 +4144,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4158,11 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
+
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4173,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,10 +4190,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4189,6 +4205,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4219,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.52.0
----Next_Part(Tue_Jun__2_13_43_56_2026_572)----
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH v2] Make propgraph object descriptions translatable
@ 2026-06-02 03:07 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-06-02 03:07 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
---
src/backend/catalog/objectaddress.c | 56 +++++++++++++++++++----------
1 file changed, 38 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..9eb574f5ccc 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,16 +4092,16 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tup);
break;
}
@@ -4109,6 +4112,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,10 +4129,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4137,6 +4144,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4158,11 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
+
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4173,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,10 +4190,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4189,6 +4205,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4219,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.52.0
----Next_Part(Tue_Jun__2_13_43_56_2026_572)----
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH v2] Make propgraph object descriptions translatable
@ 2026-06-02 03:07 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-06-02 03:07 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
---
src/backend/catalog/objectaddress.c | 56 +++++++++++++++++++----------
1 file changed, 38 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..9eb574f5ccc 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,16 +4092,16 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tup);
break;
}
@@ -4109,6 +4112,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,10 +4129,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4137,6 +4144,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4158,11 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
+
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4173,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,10 +4190,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4189,6 +4205,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4219,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.52.0
----Next_Part(Tue_Jun__2_13_43_56_2026_572)----
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH v2] Make propgraph object descriptions translatable
@ 2026-06-02 03:07 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-06-02 03:07 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
---
src/backend/catalog/objectaddress.c | 56 +++++++++++++++++++----------
1 file changed, 38 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..9eb574f5ccc 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,16 +4092,16 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tup);
break;
}
@@ -4109,6 +4112,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,10 +4129,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4137,6 +4144,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4158,11 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
+
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4173,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,10 +4190,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4189,6 +4205,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4219,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.52.0
----Next_Part(Tue_Jun__2_13_43_56_2026_572)----
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH v2] Make propgraph object descriptions translatable
@ 2026-06-02 03:07 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-06-02 03:07 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
---
src/backend/catalog/objectaddress.c | 56 +++++++++++++++++++----------
1 file changed, 38 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..9eb574f5ccc 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,16 +4092,16 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tup);
break;
}
@@ -4109,6 +4112,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,10 +4129,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4137,6 +4144,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4158,11 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
+
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4173,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,10 +4190,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4189,6 +4205,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4219,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.52.0
----Next_Part(Tue_Jun__2_13_43_56_2026_572)----
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH v2] Make propgraph object descriptions translatable
@ 2026-06-02 03:07 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-06-02 03:07 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
---
src/backend/catalog/objectaddress.c | 56 +++++++++++++++++++----------
1 file changed, 38 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..9eb574f5ccc 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,16 +4092,16 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tup);
break;
}
@@ -4109,6 +4112,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,10 +4129,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4137,6 +4144,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4158,11 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
+
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4173,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,10 +4190,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4189,6 +4205,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4219,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.52.0
----Next_Part(Tue_Jun__2_13_43_56_2026_572)----
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH v2] Make propgraph object descriptions translatable
@ 2026-06-02 03:07 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-06-02 03:07 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
---
src/backend/catalog/objectaddress.c | 56 +++++++++++++++++++----------
1 file changed, 38 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..9eb574f5ccc 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,16 +4092,16 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tup);
break;
}
@@ -4109,6 +4112,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,10 +4129,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4137,6 +4144,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4158,11 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
+
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4173,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,10 +4190,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4189,6 +4205,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4219,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.52.0
----Next_Part(Tue_Jun__2_13_43_56_2026_572)----
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH v2] Make propgraph object descriptions translatable
@ 2026-06-02 03:07 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-06-02 03:07 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
---
src/backend/catalog/objectaddress.c | 56 +++++++++++++++++++----------
1 file changed, 38 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..9eb574f5ccc 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,16 +4092,16 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tup);
break;
}
@@ -4109,6 +4112,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,10 +4129,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4137,6 +4144,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4158,11 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
+
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4173,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,10 +4190,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4189,6 +4205,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4219,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.52.0
----Next_Part(Tue_Jun__2_13_43_56_2026_572)----
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH v2] Make propgraph object descriptions translatable
@ 2026-06-02 03:07 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-06-02 03:07 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
---
src/backend/catalog/objectaddress.c | 56 +++++++++++++++++++----------
1 file changed, 38 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..9eb574f5ccc 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,16 +4092,16 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tup);
break;
}
@@ -4109,6 +4112,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,10 +4129,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4137,6 +4144,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4158,11 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
+
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4173,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,10 +4190,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4189,6 +4205,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4219,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.52.0
----Next_Part(Tue_Jun__2_13_43_56_2026_572)----
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH v2] Make propgraph object descriptions translatable
@ 2026-06-02 03:07 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-06-02 03:07 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
---
src/backend/catalog/objectaddress.c | 56 +++++++++++++++++++----------
1 file changed, 38 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..9eb574f5ccc 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,16 +4092,16 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tup);
break;
}
@@ -4109,6 +4112,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,10 +4129,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4137,6 +4144,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4158,11 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
+
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4173,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,10 +4190,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4189,6 +4205,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4219,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.52.0
----Next_Part(Tue_Jun__2_13_43_56_2026_572)----
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH v2] Make propgraph object descriptions translatable
@ 2026-06-02 03:07 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-06-02 03:07 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
---
src/backend/catalog/objectaddress.c | 56 +++++++++++++++++++----------
1 file changed, 38 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..9eb574f5ccc 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,16 +4092,16 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tup);
break;
}
@@ -4109,6 +4112,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,10 +4129,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4137,6 +4144,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4158,11 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
+
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4173,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,10 +4190,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4189,6 +4205,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4219,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.52.0
----Next_Part(Tue_Jun__2_13_43_56_2026_572)----
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH v2] Make propgraph object descriptions translatable
@ 2026-06-02 03:07 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-06-02 03:07 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
---
src/backend/catalog/objectaddress.c | 56 +++++++++++++++++++----------
1 file changed, 38 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..9eb574f5ccc 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,16 +4092,16 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tup);
break;
}
@@ -4109,6 +4112,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,10 +4129,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4137,6 +4144,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4158,11 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
+
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4173,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,10 +4190,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4189,6 +4205,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4219,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.52.0
----Next_Part(Tue_Jun__2_13_43_56_2026_572)----
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH v2] Make propgraph object descriptions translatable
@ 2026-06-02 03:07 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-06-02 03:07 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
---
src/backend/catalog/objectaddress.c | 56 +++++++++++++++++++----------
1 file changed, 38 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..9eb574f5ccc 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,16 +4092,16 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tup);
break;
}
@@ -4109,6 +4112,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,10 +4129,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4137,6 +4144,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4158,11 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
+
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4173,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,10 +4190,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4189,6 +4205,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4219,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.52.0
----Next_Part(Tue_Jun__2_13_43_56_2026_572)----
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH v2] Make propgraph object descriptions translatable
@ 2026-06-02 03:07 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-06-02 03:07 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
---
src/backend/catalog/objectaddress.c | 56 +++++++++++++++++++----------
1 file changed, 38 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..9eb574f5ccc 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,16 +4092,16 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tup);
break;
}
@@ -4109,6 +4112,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,10 +4129,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4137,6 +4144,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4158,11 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
+
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4173,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,10 +4190,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4189,6 +4205,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4219,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.52.0
----Next_Part(Tue_Jun__2_13_43_56_2026_572)----
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH v2] Make propgraph object descriptions translatable
@ 2026-06-02 03:07 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-06-02 03:07 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
---
src/backend/catalog/objectaddress.c | 56 +++++++++++++++++++----------
1 file changed, 38 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..9eb574f5ccc 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,16 +4092,16 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tup);
break;
}
@@ -4109,6 +4112,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,10 +4129,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4137,6 +4144,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4158,11 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
+
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4173,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,10 +4190,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4189,6 +4205,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4219,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.52.0
----Next_Part(Tue_Jun__2_13_43_56_2026_572)----
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH v2] Make propgraph object descriptions translatable
@ 2026-06-02 03:07 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-06-02 03:07 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
---
src/backend/catalog/objectaddress.c | 56 +++++++++++++++++++----------
1 file changed, 38 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..9eb574f5ccc 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,16 +4092,16 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tup);
break;
}
@@ -4109,6 +4112,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,10 +4129,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4137,6 +4144,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4158,11 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
+
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4173,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,10 +4190,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4189,6 +4205,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4219,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.52.0
----Next_Part(Tue_Jun__2_13_43_56_2026_572)----
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH v2] Make propgraph object descriptions translatable
@ 2026-06-02 03:07 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-06-02 03:07 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
---
src/backend/catalog/objectaddress.c | 56 +++++++++++++++++++----------
1 file changed, 38 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..9eb574f5ccc 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,16 +4092,16 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tup);
break;
}
@@ -4109,6 +4112,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,10 +4129,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4137,6 +4144,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4158,11 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
+
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4173,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,10 +4190,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4189,6 +4205,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4219,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.52.0
----Next_Part(Tue_Jun__2_13_43_56_2026_572)----
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH v2] Make propgraph object descriptions translatable
@ 2026-06-02 03:07 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-06-02 03:07 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
---
src/backend/catalog/objectaddress.c | 56 +++++++++++++++++++----------
1 file changed, 38 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..9eb574f5ccc 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,16 +4092,16 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tup);
break;
}
@@ -4109,6 +4112,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,10 +4129,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4137,6 +4144,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4158,11 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
+
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4173,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,10 +4190,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4189,6 +4205,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4219,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.52.0
----Next_Part(Tue_Jun__2_13_43_56_2026_572)----
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH v2] Make propgraph object descriptions translatable
@ 2026-06-02 03:07 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-06-02 03:07 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
---
src/backend/catalog/objectaddress.c | 56 +++++++++++++++++++----------
1 file changed, 38 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..9eb574f5ccc 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,16 +4092,16 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tup);
break;
}
@@ -4109,6 +4112,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,10 +4129,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4137,6 +4144,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4158,11 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
+
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4173,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,10 +4190,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4189,6 +4205,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4219,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.52.0
----Next_Part(Tue_Jun__2_13_43_56_2026_572)----
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH v2] Make propgraph object descriptions translatable
@ 2026-06-02 03:07 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-06-02 03:07 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
---
src/backend/catalog/objectaddress.c | 56 +++++++++++++++++++----------
1 file changed, 38 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..9eb574f5ccc 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,16 +4092,16 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tup);
break;
}
@@ -4109,6 +4112,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,10 +4129,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4137,6 +4144,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4158,11 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
+
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4173,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,10 +4190,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4189,6 +4205,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4219,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.52.0
----Next_Part(Tue_Jun__2_13_43_56_2026_572)----
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH v2] Make propgraph object descriptions translatable
@ 2026-06-02 03:07 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-06-02 03:07 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
---
src/backend/catalog/objectaddress.c | 56 +++++++++++++++++++----------
1 file changed, 38 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..9eb574f5ccc 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,16 +4092,16 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tup);
break;
}
@@ -4109,6 +4112,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,10 +4129,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4137,6 +4144,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4158,11 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
+
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4173,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,10 +4190,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4189,6 +4205,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4219,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.52.0
----Next_Part(Tue_Jun__2_13_43_56_2026_572)----
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH v2] Make propgraph object descriptions translatable
@ 2026-06-02 03:07 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-06-02 03:07 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
---
src/backend/catalog/objectaddress.c | 56 +++++++++++++++++++----------
1 file changed, 38 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..9eb574f5ccc 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,16 +4092,16 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tup);
break;
}
@@ -4109,6 +4112,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,10 +4129,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4137,6 +4144,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4158,11 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
+
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4173,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,10 +4190,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4189,6 +4205,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4219,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.52.0
----Next_Part(Tue_Jun__2_13_43_56_2026_572)----
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH v2] Make propgraph object descriptions translatable
@ 2026-06-02 03:07 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-06-02 03:07 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
---
src/backend/catalog/objectaddress.c | 56 +++++++++++++++++++----------
1 file changed, 38 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..9eb574f5ccc 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,16 +4092,16 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tup);
break;
}
@@ -4109,6 +4112,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,10 +4129,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4137,6 +4144,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4158,11 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
+
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4173,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,10 +4190,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4189,6 +4205,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4219,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.52.0
----Next_Part(Tue_Jun__2_13_43_56_2026_572)----
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH v2] Make propgraph object descriptions translatable
@ 2026-06-02 03:07 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-06-02 03:07 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
---
src/backend/catalog/objectaddress.c | 56 +++++++++++++++++++----------
1 file changed, 38 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..9eb574f5ccc 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,16 +4092,16 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tup);
break;
}
@@ -4109,6 +4112,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,10 +4129,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4137,6 +4144,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4158,11 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
+
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4173,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,10 +4190,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4189,6 +4205,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4219,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.52.0
----Next_Part(Tue_Jun__2_13_43_56_2026_572)----
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH v2] Make propgraph object descriptions translatable
@ 2026-06-02 03:07 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-06-02 03:07 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
---
src/backend/catalog/objectaddress.c | 56 +++++++++++++++++++----------
1 file changed, 38 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..9eb574f5ccc 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,16 +4092,16 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tup);
break;
}
@@ -4109,6 +4112,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,10 +4129,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4137,6 +4144,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4158,11 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
+
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4173,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,10 +4190,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4189,6 +4205,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4219,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.52.0
----Next_Part(Tue_Jun__2_13_43_56_2026_572)----
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH v2] Make propgraph object descriptions translatable
@ 2026-06-02 03:07 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-06-02 03:07 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
---
src/backend/catalog/objectaddress.c | 56 +++++++++++++++++++----------
1 file changed, 38 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..9eb574f5ccc 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,16 +4092,16 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tup);
break;
}
@@ -4109,6 +4112,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,10 +4129,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4137,6 +4144,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4158,11 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
+
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4173,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,10 +4190,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4189,6 +4205,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4219,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.52.0
----Next_Part(Tue_Jun__2_13_43_56_2026_572)----
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH v2] Make propgraph object descriptions translatable
@ 2026-06-02 03:07 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-06-02 03:07 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
---
src/backend/catalog/objectaddress.c | 56 +++++++++++++++++++----------
1 file changed, 38 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..9eb574f5ccc 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,16 +4092,16 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tup);
break;
}
@@ -4109,6 +4112,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,10 +4129,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4137,6 +4144,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4158,11 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
+
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4173,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,10 +4190,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4189,6 +4205,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4219,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.52.0
----Next_Part(Tue_Jun__2_13_43_56_2026_572)----
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH v2] Make propgraph object descriptions translatable
@ 2026-06-02 03:07 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-06-02 03:07 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
---
src/backend/catalog/objectaddress.c | 56 +++++++++++++++++++----------
1 file changed, 38 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..9eb574f5ccc 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,16 +4092,16 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tup);
break;
}
@@ -4109,6 +4112,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,10 +4129,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4137,6 +4144,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4158,11 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
+
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4173,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,10 +4190,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4189,6 +4205,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4219,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.52.0
----Next_Part(Tue_Jun__2_13_43_56_2026_572)----
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH v2] Make propgraph object descriptions translatable
@ 2026-06-02 03:07 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-06-02 03:07 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
---
src/backend/catalog/objectaddress.c | 56 +++++++++++++++++++----------
1 file changed, 38 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..9eb574f5ccc 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,16 +4092,16 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tup);
break;
}
@@ -4109,6 +4112,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,10 +4129,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4137,6 +4144,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4158,11 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
+
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4173,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,10 +4190,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4189,6 +4205,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4219,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.52.0
----Next_Part(Tue_Jun__2_13_43_56_2026_572)----
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH v2] Make propgraph object descriptions translatable
@ 2026-06-02 03:07 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-06-02 03:07 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
---
src/backend/catalog/objectaddress.c | 56 +++++++++++++++++++----------
1 file changed, 38 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..9eb574f5ccc 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,16 +4092,16 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tup);
break;
}
@@ -4109,6 +4112,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,10 +4129,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4137,6 +4144,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4158,11 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
+
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4173,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,10 +4190,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4189,6 +4205,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4219,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.52.0
----Next_Part(Tue_Jun__2_13_43_56_2026_572)----
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH v2] Make propgraph object descriptions translatable
@ 2026-06-02 03:07 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-06-02 03:07 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
---
src/backend/catalog/objectaddress.c | 56 +++++++++++++++++++----------
1 file changed, 38 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..9eb574f5ccc 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,16 +4092,16 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tup);
break;
}
@@ -4109,6 +4112,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,10 +4129,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4137,6 +4144,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4158,11 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
+
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4173,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,10 +4190,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4189,6 +4205,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4219,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.52.0
----Next_Part(Tue_Jun__2_13_43_56_2026_572)----
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH v2] Make propgraph object descriptions translatable
@ 2026-06-02 03:07 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-06-02 03:07 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
---
src/backend/catalog/objectaddress.c | 56 +++++++++++++++++++----------
1 file changed, 38 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..9eb574f5ccc 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,16 +4092,16 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tup);
break;
}
@@ -4109,6 +4112,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,10 +4129,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4137,6 +4144,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4158,11 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
+
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4173,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,10 +4190,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4189,6 +4205,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4219,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.52.0
----Next_Part(Tue_Jun__2_13_43_56_2026_572)----
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH v2] Make propgraph object descriptions translatable
@ 2026-06-02 03:07 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-06-02 03:07 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
---
src/backend/catalog/objectaddress.c | 56 +++++++++++++++++++----------
1 file changed, 38 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..9eb574f5ccc 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,16 +4092,16 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tup);
break;
}
@@ -4109,6 +4112,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,10 +4129,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4137,6 +4144,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4158,11 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
+
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4173,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,10 +4190,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4189,6 +4205,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4219,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.52.0
----Next_Part(Tue_Jun__2_13_43_56_2026_572)----
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH v2] Make propgraph object descriptions translatable
@ 2026-06-02 03:07 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-06-02 03:07 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
---
src/backend/catalog/objectaddress.c | 56 +++++++++++++++++++----------
1 file changed, 38 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..9eb574f5ccc 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,16 +4092,16 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tup);
break;
}
@@ -4109,6 +4112,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,10 +4129,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4137,6 +4144,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4158,11 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
+
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4173,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,10 +4190,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4189,6 +4205,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4219,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.52.0
----Next_Part(Tue_Jun__2_13_43_56_2026_572)----
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH v2] Make propgraph object descriptions translatable
@ 2026-06-02 03:07 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-06-02 03:07 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
---
src/backend/catalog/objectaddress.c | 56 +++++++++++++++++++----------
1 file changed, 38 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..9eb574f5ccc 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,16 +4092,16 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tup);
break;
}
@@ -4109,6 +4112,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,10 +4129,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4137,6 +4144,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4158,11 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
+
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4173,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,10 +4190,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4189,6 +4205,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4219,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.52.0
----Next_Part(Tue_Jun__2_13_43_56_2026_572)----
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH v2] Make propgraph object descriptions translatable
@ 2026-06-02 03:07 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-06-02 03:07 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
---
src/backend/catalog/objectaddress.c | 56 +++++++++++++++++++----------
1 file changed, 38 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..9eb574f5ccc 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,16 +4092,16 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tup);
break;
}
@@ -4109,6 +4112,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,10 +4129,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4137,6 +4144,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4158,11 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
+
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4173,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,10 +4190,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4189,6 +4205,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4219,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.52.0
----Next_Part(Tue_Jun__2_13_43_56_2026_572)----
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH v2] Make propgraph object descriptions translatable
@ 2026-06-02 03:07 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-06-02 03:07 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
---
src/backend/catalog/objectaddress.c | 56 +++++++++++++++++++----------
1 file changed, 38 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..9eb574f5ccc 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,16 +4092,16 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tup);
break;
}
@@ -4109,6 +4112,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,10 +4129,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4137,6 +4144,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4158,11 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
+
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4173,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,10 +4190,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4189,6 +4205,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4219,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.52.0
----Next_Part(Tue_Jun__2_13_43_56_2026_572)----
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH v2] Make propgraph object descriptions translatable
@ 2026-06-02 03:07 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-06-02 03:07 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
---
src/backend/catalog/objectaddress.c | 56 +++++++++++++++++++----------
1 file changed, 38 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..9eb574f5ccc 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,16 +4092,16 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tup);
break;
}
@@ -4109,6 +4112,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,10 +4129,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4137,6 +4144,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4158,11 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
+
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4173,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,10 +4190,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4189,6 +4205,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4219,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.52.0
----Next_Part(Tue_Jun__2_13_43_56_2026_572)----
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH v2] Make propgraph object descriptions translatable
@ 2026-06-02 03:07 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-06-02 03:07 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
---
src/backend/catalog/objectaddress.c | 56 +++++++++++++++++++----------
1 file changed, 38 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..9eb574f5ccc 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,16 +4092,16 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tup);
break;
}
@@ -4109,6 +4112,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,10 +4129,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4137,6 +4144,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4158,11 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
+
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4173,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,10 +4190,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4189,6 +4205,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4219,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.52.0
----Next_Part(Tue_Jun__2_13_43_56_2026_572)----
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH v2] Make propgraph object descriptions translatable
@ 2026-06-02 03:07 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-06-02 03:07 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
---
src/backend/catalog/objectaddress.c | 56 +++++++++++++++++++----------
1 file changed, 38 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..9eb574f5ccc 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,16 +4092,16 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tup);
break;
}
@@ -4109,6 +4112,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,10 +4129,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4137,6 +4144,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4158,11 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
+
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4173,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,10 +4190,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4189,6 +4205,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4219,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.52.0
----Next_Part(Tue_Jun__2_13_43_56_2026_572)----
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH v2] Make propgraph object descriptions translatable
@ 2026-06-02 03:07 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-06-02 03:07 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
---
src/backend/catalog/objectaddress.c | 56 +++++++++++++++++++----------
1 file changed, 38 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..9eb574f5ccc 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,16 +4092,16 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tup);
break;
}
@@ -4109,6 +4112,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,10 +4129,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4137,6 +4144,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4158,11 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
+
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4173,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,10 +4190,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4189,6 +4205,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4219,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.52.0
----Next_Part(Tue_Jun__2_13_43_56_2026_572)----
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH v2] Make propgraph object descriptions translatable
@ 2026-06-02 03:07 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-06-02 03:07 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
---
src/backend/catalog/objectaddress.c | 56 +++++++++++++++++++----------
1 file changed, 38 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..9eb574f5ccc 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,16 +4092,16 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tup);
break;
}
@@ -4109,6 +4112,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,10 +4129,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4137,6 +4144,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4158,11 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
+
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4173,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,10 +4190,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4189,6 +4205,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4219,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.52.0
----Next_Part(Tue_Jun__2_13_43_56_2026_572)----
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH v2] Make propgraph object descriptions translatable
@ 2026-06-02 03:07 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-06-02 03:07 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
---
src/backend/catalog/objectaddress.c | 56 +++++++++++++++++++----------
1 file changed, 38 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..9eb574f5ccc 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,16 +4092,16 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tup);
break;
}
@@ -4109,6 +4112,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,10 +4129,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4137,6 +4144,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4158,11 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
+
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4173,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,10 +4190,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4189,6 +4205,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4219,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.52.0
----Next_Part(Tue_Jun__2_13_43_56_2026_572)----
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH v2] Make propgraph object descriptions translatable
@ 2026-06-02 03:07 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-06-02 03:07 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
---
src/backend/catalog/objectaddress.c | 56 +++++++++++++++++++----------
1 file changed, 38 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..9eb574f5ccc 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,16 +4092,16 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tup);
break;
}
@@ -4109,6 +4112,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,10 +4129,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4137,6 +4144,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4158,11 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
+
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4173,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,10 +4190,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4189,6 +4205,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4219,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.52.0
----Next_Part(Tue_Jun__2_13_43_56_2026_572)----
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH v2] Make propgraph object descriptions translatable
@ 2026-06-02 03:07 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-06-02 03:07 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
---
src/backend/catalog/objectaddress.c | 56 +++++++++++++++++++----------
1 file changed, 38 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..9eb574f5ccc 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,16 +4092,16 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tup);
break;
}
@@ -4109,6 +4112,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,10 +4129,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4137,6 +4144,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4158,11 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
+
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4173,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,10 +4190,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4189,6 +4205,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4219,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.52.0
----Next_Part(Tue_Jun__2_13_43_56_2026_572)----
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH v2] Make propgraph object descriptions translatable
@ 2026-06-02 03:07 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-06-02 03:07 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
---
src/backend/catalog/objectaddress.c | 56 +++++++++++++++++++----------
1 file changed, 38 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..9eb574f5ccc 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,16 +4092,16 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tup);
break;
}
@@ -4109,6 +4112,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,10 +4129,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4137,6 +4144,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4158,11 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
+
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4173,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,10 +4190,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4189,6 +4205,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4219,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.52.0
----Next_Part(Tue_Jun__2_13_43_56_2026_572)----
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH v2] Make propgraph object descriptions translatable
@ 2026-06-02 03:07 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-06-02 03:07 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
---
src/backend/catalog/objectaddress.c | 56 +++++++++++++++++++----------
1 file changed, 38 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..9eb574f5ccc 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,16 +4092,16 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tup);
break;
}
@@ -4109,6 +4112,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,10 +4129,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4137,6 +4144,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4158,11 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
+
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4173,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,10 +4190,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4189,6 +4205,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4219,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.52.0
----Next_Part(Tue_Jun__2_13_43_56_2026_572)----
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH v2] Make propgraph object descriptions translatable
@ 2026-06-02 03:07 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-06-02 03:07 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
---
src/backend/catalog/objectaddress.c | 56 +++++++++++++++++++----------
1 file changed, 38 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..9eb574f5ccc 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,16 +4092,16 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tup);
break;
}
@@ -4109,6 +4112,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,10 +4129,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4137,6 +4144,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4158,11 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
+
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4173,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,10 +4190,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4189,6 +4205,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4219,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.52.0
----Next_Part(Tue_Jun__2_13_43_56_2026_572)----
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH v2] Make propgraph object descriptions translatable
@ 2026-06-02 03:07 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-06-02 03:07 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
---
src/backend/catalog/objectaddress.c | 56 +++++++++++++++++++----------
1 file changed, 38 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..9eb574f5ccc 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,16 +4092,16 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tup);
break;
}
@@ -4109,6 +4112,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,10 +4129,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4137,6 +4144,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4158,11 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
+
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4173,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,10 +4190,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4189,6 +4205,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4219,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.52.0
----Next_Part(Tue_Jun__2_13_43_56_2026_572)----
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH v2] Make propgraph object descriptions translatable
@ 2026-06-02 03:07 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-06-02 03:07 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
---
src/backend/catalog/objectaddress.c | 56 +++++++++++++++++++----------
1 file changed, 38 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..9eb574f5ccc 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,16 +4092,16 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tup);
break;
}
@@ -4109,6 +4112,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,10 +4129,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4137,6 +4144,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4158,11 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
+
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4173,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,10 +4190,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4189,6 +4205,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4219,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.52.0
----Next_Part(Tue_Jun__2_13_43_56_2026_572)----
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH v2] Make propgraph object descriptions translatable
@ 2026-06-02 03:07 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-06-02 03:07 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
---
src/backend/catalog/objectaddress.c | 56 +++++++++++++++++++----------
1 file changed, 38 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..9eb574f5ccc 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,16 +4092,16 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tup);
break;
}
@@ -4109,6 +4112,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,10 +4129,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4137,6 +4144,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4158,11 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
+
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4173,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,10 +4190,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4189,6 +4205,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4219,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.52.0
----Next_Part(Tue_Jun__2_13_43_56_2026_572)----
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH v2] Make propgraph object descriptions translatable
@ 2026-06-02 03:07 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-06-02 03:07 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
---
src/backend/catalog/objectaddress.c | 56 +++++++++++++++++++----------
1 file changed, 38 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..9eb574f5ccc 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,16 +4092,16 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tup);
break;
}
@@ -4109,6 +4112,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,10 +4129,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4137,6 +4144,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4158,11 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
+
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4173,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,10 +4190,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4189,6 +4205,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4219,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.52.0
----Next_Part(Tue_Jun__2_13_43_56_2026_572)----
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH v2] Make propgraph object descriptions translatable
@ 2026-06-02 03:07 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-06-02 03:07 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
---
src/backend/catalog/objectaddress.c | 56 +++++++++++++++++++----------
1 file changed, 38 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..9eb574f5ccc 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,16 +4092,16 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tup);
break;
}
@@ -4109,6 +4112,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,10 +4129,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4137,6 +4144,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4158,11 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
+
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4173,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,10 +4190,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4189,6 +4205,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4219,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.52.0
----Next_Part(Tue_Jun__2_13_43_56_2026_572)----
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH v2] Make propgraph object descriptions translatable
@ 2026-06-02 03:07 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-06-02 03:07 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
---
src/backend/catalog/objectaddress.c | 56 +++++++++++++++++++----------
1 file changed, 38 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..9eb574f5ccc 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,16 +4092,16 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tup);
break;
}
@@ -4109,6 +4112,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,10 +4129,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4137,6 +4144,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4158,11 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
+
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4173,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,10 +4190,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4189,6 +4205,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4219,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.52.0
----Next_Part(Tue_Jun__2_13_43_56_2026_572)----
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH v2] Make propgraph object descriptions translatable
@ 2026-06-02 03:07 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-06-02 03:07 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
---
src/backend/catalog/objectaddress.c | 56 +++++++++++++++++++----------
1 file changed, 38 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..9eb574f5ccc 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,16 +4092,16 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tup);
break;
}
@@ -4109,6 +4112,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,10 +4129,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4137,6 +4144,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4158,11 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
+
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4173,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,10 +4190,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4189,6 +4205,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4219,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.52.0
----Next_Part(Tue_Jun__2_13_43_56_2026_572)----
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH v2] Make propgraph object descriptions translatable
@ 2026-06-02 03:07 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-06-02 03:07 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
---
src/backend/catalog/objectaddress.c | 56 +++++++++++++++++++----------
1 file changed, 38 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..9eb574f5ccc 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,16 +4092,16 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tup);
break;
}
@@ -4109,6 +4112,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,10 +4129,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4137,6 +4144,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4158,11 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
+
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4173,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,10 +4190,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4189,6 +4205,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4219,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.52.0
----Next_Part(Tue_Jun__2_13_43_56_2026_572)----
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH v2] Make propgraph object descriptions translatable
@ 2026-06-02 03:07 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-06-02 03:07 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
---
src/backend/catalog/objectaddress.c | 56 +++++++++++++++++++----------
1 file changed, 38 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..9eb574f5ccc 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,16 +4092,16 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tup);
break;
}
@@ -4109,6 +4112,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,10 +4129,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4137,6 +4144,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4158,11 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
+
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4173,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,10 +4190,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4189,6 +4205,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4219,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.52.0
----Next_Part(Tue_Jun__2_13_43_56_2026_572)----
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH v2] Make propgraph object descriptions translatable
@ 2026-06-02 03:07 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-06-02 03:07 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
---
src/backend/catalog/objectaddress.c | 56 +++++++++++++++++++----------
1 file changed, 38 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..9eb574f5ccc 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,16 +4092,16 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tup);
break;
}
@@ -4109,6 +4112,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,10 +4129,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4137,6 +4144,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4158,11 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
+
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4173,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,10 +4190,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4189,6 +4205,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4219,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.52.0
----Next_Part(Tue_Jun__2_13_43_56_2026_572)----
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH v2] Make propgraph object descriptions translatable
@ 2026-06-02 03:07 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-06-02 03:07 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
---
src/backend/catalog/objectaddress.c | 56 +++++++++++++++++++----------
1 file changed, 38 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..9eb574f5ccc 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,16 +4092,16 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tup);
break;
}
@@ -4109,6 +4112,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,10 +4129,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4137,6 +4144,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4158,11 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
+
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4173,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,10 +4190,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4189,6 +4205,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4219,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.52.0
----Next_Part(Tue_Jun__2_13_43_56_2026_572)----
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH v2] Make propgraph object descriptions translatable
@ 2026-06-02 03:07 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-06-02 03:07 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
---
src/backend/catalog/objectaddress.c | 56 +++++++++++++++++++----------
1 file changed, 38 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..9eb574f5ccc 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,16 +4092,16 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tup);
break;
}
@@ -4109,6 +4112,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,10 +4129,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4137,6 +4144,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4158,11 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
+
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4173,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,10 +4190,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4189,6 +4205,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4219,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.52.0
----Next_Part(Tue_Jun__2_13_43_56_2026_572)----
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH v2] Make propgraph object descriptions translatable
@ 2026-06-02 03:07 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-06-02 03:07 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
---
src/backend/catalog/objectaddress.c | 56 +++++++++++++++++++----------
1 file changed, 38 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..9eb574f5ccc 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,16 +4092,16 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tup);
break;
}
@@ -4109,6 +4112,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,10 +4129,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4137,6 +4144,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4158,11 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
+
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4173,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,10 +4190,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4189,6 +4205,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4219,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.52.0
----Next_Part(Tue_Jun__2_13_43_56_2026_572)----
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH v2] Make propgraph object descriptions translatable
@ 2026-06-02 03:07 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-06-02 03:07 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
---
src/backend/catalog/objectaddress.c | 56 +++++++++++++++++++----------
1 file changed, 38 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..9eb574f5ccc 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,16 +4092,16 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tup);
break;
}
@@ -4109,6 +4112,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,10 +4129,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4137,6 +4144,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4158,11 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
+
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4173,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,10 +4190,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4189,6 +4205,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4219,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.52.0
----Next_Part(Tue_Jun__2_13_43_56_2026_572)----
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH v2] Make propgraph object descriptions translatable
@ 2026-06-02 03:07 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-06-02 03:07 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
---
src/backend/catalog/objectaddress.c | 56 +++++++++++++++++++----------
1 file changed, 38 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..9eb574f5ccc 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,16 +4092,16 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tup);
break;
}
@@ -4109,6 +4112,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,10 +4129,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4137,6 +4144,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4158,11 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
+
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4173,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,10 +4190,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4189,6 +4205,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4219,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.52.0
----Next_Part(Tue_Jun__2_13_43_56_2026_572)----
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH v2] Make propgraph object descriptions translatable
@ 2026-06-02 03:07 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-06-02 03:07 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
---
src/backend/catalog/objectaddress.c | 56 +++++++++++++++++++----------
1 file changed, 38 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..9eb574f5ccc 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,16 +4092,16 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tup);
break;
}
@@ -4109,6 +4112,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,10 +4129,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4137,6 +4144,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4158,11 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
+
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4173,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,10 +4190,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4189,6 +4205,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4219,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.52.0
----Next_Part(Tue_Jun__2_13_43_56_2026_572)----
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH v2] Make propgraph object descriptions translatable
@ 2026-06-02 03:07 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-06-02 03:07 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
---
src/backend/catalog/objectaddress.c | 56 +++++++++++++++++++----------
1 file changed, 38 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..9eb574f5ccc 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,16 +4092,16 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tup);
break;
}
@@ -4109,6 +4112,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,10 +4129,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4137,6 +4144,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4158,11 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
+
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4173,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,10 +4190,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4189,6 +4205,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4219,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.52.0
----Next_Part(Tue_Jun__2_13_43_56_2026_572)----
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH v2] Make propgraph object descriptions translatable
@ 2026-06-02 03:07 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-06-02 03:07 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
---
src/backend/catalog/objectaddress.c | 56 +++++++++++++++++++----------
1 file changed, 38 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..9eb574f5ccc 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,16 +4092,16 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tup);
break;
}
@@ -4109,6 +4112,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,10 +4129,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4137,6 +4144,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4158,11 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
+
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4173,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,10 +4190,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4189,6 +4205,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4219,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.52.0
----Next_Part(Tue_Jun__2_13_43_56_2026_572)----
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH v2] Make propgraph object descriptions translatable
@ 2026-06-02 03:07 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-06-02 03:07 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
---
src/backend/catalog/objectaddress.c | 56 +++++++++++++++++++----------
1 file changed, 38 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..9eb574f5ccc 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,16 +4092,16 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tup);
break;
}
@@ -4109,6 +4112,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,10 +4129,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4137,6 +4144,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4158,11 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
+
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4173,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,10 +4190,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4189,6 +4205,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4219,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.52.0
----Next_Part(Tue_Jun__2_13_43_56_2026_572)----
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH v2] Make propgraph object descriptions translatable
@ 2026-06-02 03:07 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-06-02 03:07 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
---
src/backend/catalog/objectaddress.c | 56 +++++++++++++++++++----------
1 file changed, 38 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..9eb574f5ccc 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,16 +4092,16 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tup);
break;
}
@@ -4109,6 +4112,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,10 +4129,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4137,6 +4144,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4158,11 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
+
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4173,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,10 +4190,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4189,6 +4205,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4219,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.52.0
----Next_Part(Tue_Jun__2_13_43_56_2026_572)----
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH v2] Make propgraph object descriptions translatable
@ 2026-06-02 03:07 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-06-02 03:07 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
---
src/backend/catalog/objectaddress.c | 56 +++++++++++++++++++----------
1 file changed, 38 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..9eb574f5ccc 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,16 +4092,16 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tup);
break;
}
@@ -4109,6 +4112,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,10 +4129,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4137,6 +4144,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4158,11 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
+
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4173,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,10 +4190,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4189,6 +4205,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4219,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.52.0
----Next_Part(Tue_Jun__2_13_43_56_2026_572)----
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH v2] Make propgraph object descriptions translatable
@ 2026-06-02 03:07 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-06-02 03:07 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
---
src/backend/catalog/objectaddress.c | 56 +++++++++++++++++++----------
1 file changed, 38 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..9eb574f5ccc 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,16 +4092,16 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tup);
break;
}
@@ -4109,6 +4112,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,10 +4129,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4137,6 +4144,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4158,11 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
+
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4173,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,10 +4190,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4189,6 +4205,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4219,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.52.0
----Next_Part(Tue_Jun__2_13_43_56_2026_572)----
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH v2] Make propgraph object descriptions translatable
@ 2026-06-02 03:07 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-06-02 03:07 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
---
src/backend/catalog/objectaddress.c | 56 +++++++++++++++++++----------
1 file changed, 38 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..9eb574f5ccc 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,16 +4092,16 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tup);
break;
}
@@ -4109,6 +4112,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,10 +4129,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4137,6 +4144,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4158,11 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
+
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4173,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,10 +4190,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4189,6 +4205,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4219,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.52.0
----Next_Part(Tue_Jun__2_13_43_56_2026_572)----
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH v2] Make propgraph object descriptions translatable
@ 2026-06-02 03:07 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-06-02 03:07 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
---
src/backend/catalog/objectaddress.c | 56 +++++++++++++++++++----------
1 file changed, 38 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..9eb574f5ccc 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,16 +4092,16 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tup);
break;
}
@@ -4109,6 +4112,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,10 +4129,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4137,6 +4144,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4158,11 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
+
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4173,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,10 +4190,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4189,6 +4205,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4219,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.52.0
----Next_Part(Tue_Jun__2_13_43_56_2026_572)----
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH v2] Make propgraph object descriptions translatable
@ 2026-06-02 03:07 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-06-02 03:07 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
---
src/backend/catalog/objectaddress.c | 56 +++++++++++++++++++----------
1 file changed, 38 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..9eb574f5ccc 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,16 +4092,16 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tup);
break;
}
@@ -4109,6 +4112,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,10 +4129,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4137,6 +4144,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4158,11 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
+
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4173,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,10 +4190,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4189,6 +4205,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4219,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.52.0
----Next_Part(Tue_Jun__2_13_43_56_2026_572)----
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH v2] Make propgraph object descriptions translatable
@ 2026-06-02 03:07 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-06-02 03:07 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
---
src/backend/catalog/objectaddress.c | 56 +++++++++++++++++++----------
1 file changed, 38 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..9eb574f5ccc 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,16 +4092,16 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tup);
break;
}
@@ -4109,6 +4112,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,10 +4129,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4137,6 +4144,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4158,11 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
+
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4173,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,10 +4190,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4189,6 +4205,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4219,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.52.0
----Next_Part(Tue_Jun__2_13_43_56_2026_572)----
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH v2] Make propgraph object descriptions translatable
@ 2026-06-02 03:07 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-06-02 03:07 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
---
src/backend/catalog/objectaddress.c | 56 +++++++++++++++++++----------
1 file changed, 38 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..9eb574f5ccc 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,16 +4092,16 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tup);
break;
}
@@ -4109,6 +4112,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,10 +4129,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4137,6 +4144,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4158,11 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
+
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4173,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,10 +4190,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4189,6 +4205,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4219,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.52.0
----Next_Part(Tue_Jun__2_13_43_56_2026_572)----
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH v2] Make propgraph object descriptions translatable
@ 2026-06-02 03:07 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-06-02 03:07 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
---
src/backend/catalog/objectaddress.c | 56 +++++++++++++++++++----------
1 file changed, 38 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..9eb574f5ccc 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,16 +4092,16 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tup);
break;
}
@@ -4109,6 +4112,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,10 +4129,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4137,6 +4144,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4158,11 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
+
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4173,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,10 +4190,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4189,6 +4205,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4219,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.52.0
----Next_Part(Tue_Jun__2_13_43_56_2026_572)----
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH v2] Make propgraph object descriptions translatable
@ 2026-06-02 03:07 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-06-02 03:07 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
---
src/backend/catalog/objectaddress.c | 56 +++++++++++++++++++----------
1 file changed, 38 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..9eb574f5ccc 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,16 +4092,16 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tup);
break;
}
@@ -4109,6 +4112,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,10 +4129,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4137,6 +4144,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4158,11 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
+
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4173,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,10 +4190,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4189,6 +4205,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4219,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.52.0
----Next_Part(Tue_Jun__2_13_43_56_2026_572)----
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH v2] Make propgraph object descriptions translatable
@ 2026-06-02 03:07 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-06-02 03:07 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
---
src/backend/catalog/objectaddress.c | 56 +++++++++++++++++++----------
1 file changed, 38 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..9eb574f5ccc 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,16 +4092,16 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tup);
break;
}
@@ -4109,6 +4112,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,10 +4129,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4137,6 +4144,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4158,11 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
+
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4173,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,10 +4190,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4189,6 +4205,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4219,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.52.0
----Next_Part(Tue_Jun__2_13_43_56_2026_572)----
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH v2] Make propgraph object descriptions translatable
@ 2026-06-02 03:07 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-06-02 03:07 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
---
src/backend/catalog/objectaddress.c | 56 +++++++++++++++++++----------
1 file changed, 38 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..9eb574f5ccc 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,16 +4092,16 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tup);
break;
}
@@ -4109,6 +4112,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,10 +4129,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4137,6 +4144,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4158,11 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
+
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4173,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,10 +4190,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4189,6 +4205,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4219,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.52.0
----Next_Part(Tue_Jun__2_13_43_56_2026_572)----
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH v2] Make propgraph object descriptions translatable
@ 2026-06-02 03:07 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-06-02 03:07 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
---
src/backend/catalog/objectaddress.c | 56 +++++++++++++++++++----------
1 file changed, 38 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..9eb574f5ccc 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,16 +4092,16 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tup);
break;
}
@@ -4109,6 +4112,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,10 +4129,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4137,6 +4144,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4158,11 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
+
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4173,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,10 +4190,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4189,6 +4205,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4219,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.52.0
----Next_Part(Tue_Jun__2_13_43_56_2026_572)----
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH v2] Make propgraph object descriptions translatable
@ 2026-06-02 03:07 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-06-02 03:07 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
---
src/backend/catalog/objectaddress.c | 56 +++++++++++++++++++----------
1 file changed, 38 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..9eb574f5ccc 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,16 +4092,16 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tup);
break;
}
@@ -4109,6 +4112,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,10 +4129,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4137,6 +4144,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4158,11 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
+
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4173,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,10 +4190,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4189,6 +4205,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4219,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.52.0
----Next_Part(Tue_Jun__2_13_43_56_2026_572)----
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH v2] Make propgraph object descriptions translatable
@ 2026-06-02 03:07 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-06-02 03:07 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
---
src/backend/catalog/objectaddress.c | 56 +++++++++++++++++++----------
1 file changed, 38 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..9eb574f5ccc 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,16 +4092,16 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tup);
break;
}
@@ -4109,6 +4112,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,10 +4129,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4137,6 +4144,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4158,11 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
+
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4173,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,10 +4190,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4189,6 +4205,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4219,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.52.0
----Next_Part(Tue_Jun__2_13_43_56_2026_572)----
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH v2] Make propgraph object descriptions translatable
@ 2026-06-02 03:07 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-06-02 03:07 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
---
src/backend/catalog/objectaddress.c | 56 +++++++++++++++++++----------
1 file changed, 38 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..9eb574f5ccc 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,16 +4092,16 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tup);
break;
}
@@ -4109,6 +4112,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,10 +4129,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4137,6 +4144,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4158,11 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
+
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4173,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,10 +4190,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4189,6 +4205,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4219,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.52.0
----Next_Part(Tue_Jun__2_13_43_56_2026_572)----
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH v2] Make propgraph object descriptions translatable
@ 2026-06-02 03:07 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-06-02 03:07 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
---
src/backend/catalog/objectaddress.c | 56 +++++++++++++++++++----------
1 file changed, 38 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..9eb574f5ccc 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,16 +4092,16 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tup);
break;
}
@@ -4109,6 +4112,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,10 +4129,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4137,6 +4144,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4158,11 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
+
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4173,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,10 +4190,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4189,6 +4205,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4219,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.52.0
----Next_Part(Tue_Jun__2_13_43_56_2026_572)----
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH v2] Make propgraph object descriptions translatable
@ 2026-06-02 03:07 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-06-02 03:07 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
---
src/backend/catalog/objectaddress.c | 56 +++++++++++++++++++----------
1 file changed, 38 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..9eb574f5ccc 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,16 +4092,16 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tup);
break;
}
@@ -4109,6 +4112,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,10 +4129,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4137,6 +4144,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4158,11 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
+
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4173,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,10 +4190,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4189,6 +4205,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4219,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.52.0
----Next_Part(Tue_Jun__2_13_43_56_2026_572)----
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH v2] Make propgraph object descriptions translatable
@ 2026-06-02 03:07 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-06-02 03:07 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
---
src/backend/catalog/objectaddress.c | 56 +++++++++++++++++++----------
1 file changed, 38 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..9eb574f5ccc 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,16 +4092,16 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tup);
break;
}
@@ -4109,6 +4112,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,10 +4129,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4137,6 +4144,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4158,11 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
+
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4173,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,10 +4190,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4189,6 +4205,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4219,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.52.0
----Next_Part(Tue_Jun__2_13_43_56_2026_572)----
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH v2] Make propgraph object descriptions translatable
@ 2026-06-02 03:07 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-06-02 03:07 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
---
src/backend/catalog/objectaddress.c | 56 +++++++++++++++++++----------
1 file changed, 38 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..9eb574f5ccc 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,16 +4092,16 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tup);
break;
}
@@ -4109,6 +4112,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,10 +4129,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4137,6 +4144,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4158,11 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
+
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4173,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,10 +4190,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4189,6 +4205,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4219,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.52.0
----Next_Part(Tue_Jun__2_13_43_56_2026_572)----
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH v2] Make propgraph object descriptions translatable
@ 2026-06-02 03:07 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-06-02 03:07 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
---
src/backend/catalog/objectaddress.c | 56 +++++++++++++++++++----------
1 file changed, 38 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..9eb574f5ccc 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,16 +4092,16 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tup);
break;
}
@@ -4109,6 +4112,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,10 +4129,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4137,6 +4144,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4158,11 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
+
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4173,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,10 +4190,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4189,6 +4205,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4219,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.52.0
----Next_Part(Tue_Jun__2_13_43_56_2026_572)----
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH v2] Make propgraph object descriptions translatable
@ 2026-06-02 03:07 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-06-02 03:07 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
---
src/backend/catalog/objectaddress.c | 56 +++++++++++++++++++----------
1 file changed, 38 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..9eb574f5ccc 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,16 +4092,16 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tup);
break;
}
@@ -4109,6 +4112,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,10 +4129,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4137,6 +4144,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4158,11 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
+
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4173,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,10 +4190,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4189,6 +4205,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4219,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.52.0
----Next_Part(Tue_Jun__2_13_43_56_2026_572)----
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH v2] Make propgraph object descriptions translatable
@ 2026-06-02 03:07 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-06-02 03:07 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
---
src/backend/catalog/objectaddress.c | 56 +++++++++++++++++++----------
1 file changed, 38 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..9eb574f5ccc 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,16 +4092,16 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tup);
break;
}
@@ -4109,6 +4112,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,10 +4129,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4137,6 +4144,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4158,11 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
+
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4173,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,10 +4190,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4189,6 +4205,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4219,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.52.0
----Next_Part(Tue_Jun__2_13_43_56_2026_572)----
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH v2] Make propgraph object descriptions translatable
@ 2026-06-02 03:07 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-06-02 03:07 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
---
src/backend/catalog/objectaddress.c | 56 +++++++++++++++++++----------
1 file changed, 38 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..9eb574f5ccc 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,16 +4092,16 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tup);
break;
}
@@ -4109,6 +4112,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,10 +4129,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4137,6 +4144,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4158,11 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
+
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4173,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,10 +4190,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4189,6 +4205,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4219,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.52.0
----Next_Part(Tue_Jun__2_13_43_56_2026_572)----
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH v2] Make propgraph object descriptions translatable
@ 2026-06-02 03:07 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-06-02 03:07 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
---
src/backend/catalog/objectaddress.c | 56 +++++++++++++++++++----------
1 file changed, 38 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..9eb574f5ccc 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,16 +4092,16 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tup);
break;
}
@@ -4109,6 +4112,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,10 +4129,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4137,6 +4144,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4158,11 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
+
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4173,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,10 +4190,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4189,6 +4205,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4219,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.52.0
----Next_Part(Tue_Jun__2_13_43_56_2026_572)----
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH v2] Make propgraph object descriptions translatable
@ 2026-06-02 03:07 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-06-02 03:07 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
---
src/backend/catalog/objectaddress.c | 56 +++++++++++++++++++----------
1 file changed, 38 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..9eb574f5ccc 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,16 +4092,16 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tup);
break;
}
@@ -4109,6 +4112,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,10 +4129,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4137,6 +4144,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4158,11 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
+
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4173,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,10 +4190,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4189,6 +4205,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4219,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.52.0
----Next_Part(Tue_Jun__2_13_43_56_2026_572)----
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH v2] Make propgraph object descriptions translatable
@ 2026-06-02 03:07 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-06-02 03:07 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
---
src/backend/catalog/objectaddress.c | 56 +++++++++++++++++++----------
1 file changed, 38 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..9eb574f5ccc 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,16 +4092,16 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tup);
break;
}
@@ -4109,6 +4112,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,10 +4129,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4137,6 +4144,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4158,11 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
+
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4173,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,10 +4190,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4189,6 +4205,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4219,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.52.0
----Next_Part(Tue_Jun__2_13_43_56_2026_572)----
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH v2] Make propgraph object descriptions translatable
@ 2026-06-02 03:07 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-06-02 03:07 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
---
src/backend/catalog/objectaddress.c | 56 +++++++++++++++++++----------
1 file changed, 38 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..9eb574f5ccc 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,16 +4092,16 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tup);
break;
}
@@ -4109,6 +4112,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,10 +4129,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4137,6 +4144,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4158,11 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
+
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4173,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,10 +4190,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4189,6 +4205,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4219,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.52.0
----Next_Part(Tue_Jun__2_13_43_56_2026_572)----
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH v2] Make propgraph object descriptions translatable
@ 2026-06-02 03:07 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-06-02 03:07 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
---
src/backend/catalog/objectaddress.c | 56 +++++++++++++++++++----------
1 file changed, 38 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..9eb574f5ccc 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,16 +4092,16 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tup);
break;
}
@@ -4109,6 +4112,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,10 +4129,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4137,6 +4144,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4158,11 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
+
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4173,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,10 +4190,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4189,6 +4205,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4219,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.52.0
----Next_Part(Tue_Jun__2_13_43_56_2026_572)----
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH v2] Make propgraph object descriptions translatable
@ 2026-06-02 03:07 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-06-02 03:07 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
---
src/backend/catalog/objectaddress.c | 56 +++++++++++++++++++----------
1 file changed, 38 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..9eb574f5ccc 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,16 +4092,16 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tup);
break;
}
@@ -4109,6 +4112,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,10 +4129,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4137,6 +4144,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4158,11 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
+
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4173,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,10 +4190,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4189,6 +4205,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4219,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.52.0
----Next_Part(Tue_Jun__2_13_43_56_2026_572)----
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH v2] Make propgraph object descriptions translatable
@ 2026-06-02 03:07 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-06-02 03:07 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
---
src/backend/catalog/objectaddress.c | 56 +++++++++++++++++++----------
1 file changed, 38 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..9eb574f5ccc 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,16 +4092,16 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tup);
break;
}
@@ -4109,6 +4112,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,10 +4129,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4137,6 +4144,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4158,11 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
+
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4173,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,10 +4190,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4189,6 +4205,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4219,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.52.0
----Next_Part(Tue_Jun__2_13_43_56_2026_572)----
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH v2] Make propgraph object descriptions translatable
@ 2026-06-02 03:07 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-06-02 03:07 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
---
src/backend/catalog/objectaddress.c | 56 +++++++++++++++++++----------
1 file changed, 38 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..9eb574f5ccc 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,16 +4092,16 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tup);
break;
}
@@ -4109,6 +4112,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,10 +4129,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4137,6 +4144,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4158,11 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
+
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4173,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,10 +4190,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4189,6 +4205,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4219,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.52.0
----Next_Part(Tue_Jun__2_13_43_56_2026_572)----
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH v2] Make propgraph object descriptions translatable
@ 2026-06-02 03:07 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-06-02 03:07 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
---
src/backend/catalog/objectaddress.c | 56 +++++++++++++++++++----------
1 file changed, 38 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..9eb574f5ccc 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,16 +4092,16 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tup);
break;
}
@@ -4109,6 +4112,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,10 +4129,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4137,6 +4144,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4158,11 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
+
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4173,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,10 +4190,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4189,6 +4205,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4219,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.52.0
----Next_Part(Tue_Jun__2_13_43_56_2026_572)----
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH v2] Make propgraph object descriptions translatable
@ 2026-06-02 03:07 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-06-02 03:07 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
---
src/backend/catalog/objectaddress.c | 56 +++++++++++++++++++----------
1 file changed, 38 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..9eb574f5ccc 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,16 +4092,16 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tup);
break;
}
@@ -4109,6 +4112,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,10 +4129,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4137,6 +4144,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4158,11 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
+
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4173,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,10 +4190,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4189,6 +4205,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4219,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.52.0
----Next_Part(Tue_Jun__2_13_43_56_2026_572)----
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH v2] Make propgraph object descriptions translatable
@ 2026-06-02 03:07 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-06-02 03:07 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
---
src/backend/catalog/objectaddress.c | 56 +++++++++++++++++++----------
1 file changed, 38 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..9eb574f5ccc 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,16 +4092,16 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tup);
break;
}
@@ -4109,6 +4112,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,10 +4129,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4137,6 +4144,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4158,11 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
+
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4173,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,10 +4190,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4189,6 +4205,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4219,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.52.0
----Next_Part(Tue_Jun__2_13_43_56_2026_572)----
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH v2] Make propgraph object descriptions translatable
@ 2026-06-02 03:07 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-06-02 03:07 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
---
src/backend/catalog/objectaddress.c | 56 +++++++++++++++++++----------
1 file changed, 38 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..9eb574f5ccc 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,16 +4092,16 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tup);
break;
}
@@ -4109,6 +4112,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,10 +4129,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4137,6 +4144,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4158,11 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
+
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4173,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,10 +4190,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4189,6 +4205,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4219,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.52.0
----Next_Part(Tue_Jun__2_13_43_56_2026_572)----
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH v2] Make propgraph object descriptions translatable
@ 2026-06-02 03:07 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-06-02 03:07 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
---
src/backend/catalog/objectaddress.c | 56 +++++++++++++++++++----------
1 file changed, 38 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..9eb574f5ccc 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,16 +4092,16 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tup);
break;
}
@@ -4109,6 +4112,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,10 +4129,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4137,6 +4144,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4158,11 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
+
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4173,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,10 +4190,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4189,6 +4205,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4219,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.52.0
----Next_Part(Tue_Jun__2_13_43_56_2026_572)----
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH v2] Make propgraph object descriptions translatable
@ 2026-06-02 03:07 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-06-02 03:07 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
---
src/backend/catalog/objectaddress.c | 56 +++++++++++++++++++----------
1 file changed, 38 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..9eb574f5ccc 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,16 +4092,16 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tup);
break;
}
@@ -4109,6 +4112,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,10 +4129,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4137,6 +4144,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4158,11 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
+
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4173,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,10 +4190,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4189,6 +4205,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4219,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.52.0
----Next_Part(Tue_Jun__2_13_43_56_2026_572)----
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH v2] Make propgraph object descriptions translatable
@ 2026-06-02 03:07 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-06-02 03:07 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
---
src/backend/catalog/objectaddress.c | 56 +++++++++++++++++++----------
1 file changed, 38 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..9eb574f5ccc 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,16 +4092,16 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tup);
break;
}
@@ -4109,6 +4112,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,10 +4129,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4137,6 +4144,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4158,11 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
+
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4173,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,10 +4190,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4189,6 +4205,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4219,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.52.0
----Next_Part(Tue_Jun__2_13_43_56_2026_572)----
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH v2] Make propgraph object descriptions translatable
@ 2026-06-02 03:07 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-06-02 03:07 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
---
src/backend/catalog/objectaddress.c | 56 +++++++++++++++++++----------
1 file changed, 38 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..9eb574f5ccc 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,16 +4092,16 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tup);
break;
}
@@ -4109,6 +4112,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,10 +4129,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4137,6 +4144,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4158,11 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
+
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4173,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,10 +4190,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4189,6 +4205,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4219,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.52.0
----Next_Part(Tue_Jun__2_13_43_56_2026_572)----
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH v2] Make propgraph object descriptions translatable
@ 2026-06-02 03:07 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-06-02 03:07 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
---
src/backend/catalog/objectaddress.c | 56 +++++++++++++++++++----------
1 file changed, 38 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..9eb574f5ccc 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,16 +4092,16 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tup);
break;
}
@@ -4109,6 +4112,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,10 +4129,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4137,6 +4144,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4158,11 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
+
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4173,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,10 +4190,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4189,6 +4205,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4219,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.52.0
----Next_Part(Tue_Jun__2_13_43_56_2026_572)----
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH v2] Make propgraph object descriptions translatable
@ 2026-06-02 03:07 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-06-02 03:07 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
---
src/backend/catalog/objectaddress.c | 56 +++++++++++++++++++----------
1 file changed, 38 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..9eb574f5ccc 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,16 +4092,16 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tup);
break;
}
@@ -4109,6 +4112,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,10 +4129,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4137,6 +4144,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4158,11 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
+
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4173,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,10 +4190,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4189,6 +4205,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4219,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.52.0
----Next_Part(Tue_Jun__2_13_43_56_2026_572)----
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH v2] Make propgraph object descriptions translatable
@ 2026-06-02 03:07 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-06-02 03:07 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
---
src/backend/catalog/objectaddress.c | 56 +++++++++++++++++++----------
1 file changed, 38 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..9eb574f5ccc 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,16 +4092,16 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tup);
break;
}
@@ -4109,6 +4112,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,10 +4129,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4137,6 +4144,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4158,11 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
+
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4173,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,10 +4190,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4189,6 +4205,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4219,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.52.0
----Next_Part(Tue_Jun__2_13_43_56_2026_572)----
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH v2] Make propgraph object descriptions translatable
@ 2026-06-02 03:07 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-06-02 03:07 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
---
src/backend/catalog/objectaddress.c | 56 +++++++++++++++++++----------
1 file changed, 38 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..9eb574f5ccc 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,16 +4092,16 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tup);
break;
}
@@ -4109,6 +4112,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,10 +4129,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4137,6 +4144,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4158,11 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
+
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4173,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,10 +4190,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4189,6 +4205,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4219,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.52.0
----Next_Part(Tue_Jun__2_13_43_56_2026_572)----
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH v2] Make propgraph object descriptions translatable
@ 2026-06-02 03:07 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-06-02 03:07 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
---
src/backend/catalog/objectaddress.c | 56 +++++++++++++++++++----------
1 file changed, 38 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..9eb574f5ccc 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,16 +4092,16 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tup);
break;
}
@@ -4109,6 +4112,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,10 +4129,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4137,6 +4144,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4158,11 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
+
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4173,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,10 +4190,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4189,6 +4205,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4219,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.52.0
----Next_Part(Tue_Jun__2_13_43_56_2026_572)----
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH v2] Make propgraph object descriptions translatable
@ 2026-06-02 03:07 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-06-02 03:07 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
---
src/backend/catalog/objectaddress.c | 56 +++++++++++++++++++----------
1 file changed, 38 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..9eb574f5ccc 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,16 +4092,16 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tup);
break;
}
@@ -4109,6 +4112,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,10 +4129,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4137,6 +4144,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4158,11 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
+
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4173,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,10 +4190,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4189,6 +4205,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4219,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.52.0
----Next_Part(Tue_Jun__2_13_43_56_2026_572)----
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH v2] Make propgraph object descriptions translatable
@ 2026-06-02 03:07 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-06-02 03:07 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
---
src/backend/catalog/objectaddress.c | 56 +++++++++++++++++++----------
1 file changed, 38 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..9eb574f5ccc 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,16 +4092,16 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tup);
break;
}
@@ -4109,6 +4112,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,10 +4129,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4137,6 +4144,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4158,11 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
+
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4173,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,10 +4190,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4189,6 +4205,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4219,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.52.0
----Next_Part(Tue_Jun__2_13_43_56_2026_572)----
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH v2] Make propgraph object descriptions translatable
@ 2026-06-02 03:07 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-06-02 03:07 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
---
src/backend/catalog/objectaddress.c | 56 +++++++++++++++++++----------
1 file changed, 38 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..9eb574f5ccc 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,16 +4092,16 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tup);
break;
}
@@ -4109,6 +4112,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,10 +4129,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4137,6 +4144,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4158,11 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
+
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4173,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,10 +4190,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4189,6 +4205,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4219,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.52.0
----Next_Part(Tue_Jun__2_13_43_56_2026_572)----
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH v2] Make propgraph object descriptions translatable
@ 2026-06-02 03:07 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-06-02 03:07 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
---
src/backend/catalog/objectaddress.c | 56 +++++++++++++++++++----------
1 file changed, 38 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..9eb574f5ccc 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,16 +4092,16 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tup);
break;
}
@@ -4109,6 +4112,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,10 +4129,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4137,6 +4144,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4158,11 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
+
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4173,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,10 +4190,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4189,6 +4205,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4219,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.52.0
----Next_Part(Tue_Jun__2_13_43_56_2026_572)----
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH v2] Make propgraph object descriptions translatable
@ 2026-06-02 03:07 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-06-02 03:07 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
---
src/backend/catalog/objectaddress.c | 56 +++++++++++++++++++----------
1 file changed, 38 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..9eb574f5ccc 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,16 +4092,16 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tup);
break;
}
@@ -4109,6 +4112,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,10 +4129,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4137,6 +4144,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4158,11 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
+
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4173,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,10 +4190,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4189,6 +4205,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4219,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.52.0
----Next_Part(Tue_Jun__2_13_43_56_2026_572)----
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH v2] Make propgraph object descriptions translatable
@ 2026-06-02 03:07 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-06-02 03:07 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
---
src/backend/catalog/objectaddress.c | 56 +++++++++++++++++++----------
1 file changed, 38 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..9eb574f5ccc 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,16 +4092,16 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tup);
break;
}
@@ -4109,6 +4112,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,10 +4129,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4137,6 +4144,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4158,11 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
+
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4173,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,10 +4190,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4189,6 +4205,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4219,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.52.0
----Next_Part(Tue_Jun__2_13_43_56_2026_572)----
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH v2] Make propgraph object descriptions translatable
@ 2026-06-02 03:07 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-06-02 03:07 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
---
src/backend/catalog/objectaddress.c | 56 +++++++++++++++++++----------
1 file changed, 38 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..9eb574f5ccc 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,16 +4092,16 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tup);
break;
}
@@ -4109,6 +4112,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,10 +4129,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4137,6 +4144,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4158,11 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
+
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4173,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,10 +4190,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4189,6 +4205,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4219,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.52.0
----Next_Part(Tue_Jun__2_13_43_56_2026_572)----
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH v2] Make propgraph object descriptions translatable
@ 2026-06-02 03:07 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-06-02 03:07 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
---
src/backend/catalog/objectaddress.c | 56 +++++++++++++++++++----------
1 file changed, 38 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..9eb574f5ccc 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,16 +4092,16 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tup);
break;
}
@@ -4109,6 +4112,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,10 +4129,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4137,6 +4144,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4158,11 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
+
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4173,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,10 +4190,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4189,6 +4205,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4219,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.52.0
----Next_Part(Tue_Jun__2_13_43_56_2026_572)----
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH v2] Make propgraph object descriptions translatable
@ 2026-06-02 03:07 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-06-02 03:07 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
---
src/backend/catalog/objectaddress.c | 56 +++++++++++++++++++----------
1 file changed, 38 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..9eb574f5ccc 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,16 +4092,16 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tup);
break;
}
@@ -4109,6 +4112,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,10 +4129,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4137,6 +4144,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4158,11 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
+
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4173,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,10 +4190,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4189,6 +4205,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4219,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.52.0
----Next_Part(Tue_Jun__2_13_43_56_2026_572)----
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH v2] Make propgraph object descriptions translatable
@ 2026-06-02 03:07 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-06-02 03:07 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
---
src/backend/catalog/objectaddress.c | 56 +++++++++++++++++++----------
1 file changed, 38 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..9eb574f5ccc 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,16 +4092,16 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tup);
break;
}
@@ -4109,6 +4112,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,10 +4129,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4137,6 +4144,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4158,11 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
+
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4173,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,10 +4190,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4189,6 +4205,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4219,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.52.0
----Next_Part(Tue_Jun__2_13_43_56_2026_572)----
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH v2] Make propgraph object descriptions translatable
@ 2026-06-02 03:07 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-06-02 03:07 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
---
src/backend/catalog/objectaddress.c | 56 +++++++++++++++++++----------
1 file changed, 38 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..9eb574f5ccc 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,16 +4092,16 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tup);
break;
}
@@ -4109,6 +4112,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,10 +4129,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4137,6 +4144,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4158,11 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
+
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4173,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,10 +4190,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4189,6 +4205,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4219,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.52.0
----Next_Part(Tue_Jun__2_13_43_56_2026_572)----
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH v2] Make propgraph object descriptions translatable
@ 2026-06-02 03:07 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-06-02 03:07 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
---
src/backend/catalog/objectaddress.c | 56 +++++++++++++++++++----------
1 file changed, 38 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..9eb574f5ccc 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,16 +4092,16 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tup);
break;
}
@@ -4109,6 +4112,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,10 +4129,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4137,6 +4144,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4158,11 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
+
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4173,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,10 +4190,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4189,6 +4205,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4219,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.52.0
----Next_Part(Tue_Jun__2_13_43_56_2026_572)----
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH v2] Make propgraph object descriptions translatable
@ 2026-06-02 03:07 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-06-02 03:07 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
---
src/backend/catalog/objectaddress.c | 56 +++++++++++++++++++----------
1 file changed, 38 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..9eb574f5ccc 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,16 +4092,16 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tup);
break;
}
@@ -4109,6 +4112,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,10 +4129,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4137,6 +4144,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4158,11 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
+
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4173,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,10 +4190,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4189,6 +4205,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4219,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.52.0
----Next_Part(Tue_Jun__2_13_43_56_2026_572)----
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH v2] Make propgraph object descriptions translatable
@ 2026-06-02 03:07 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-06-02 03:07 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
---
src/backend/catalog/objectaddress.c | 56 +++++++++++++++++++----------
1 file changed, 38 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..9eb574f5ccc 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,16 +4092,16 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tup);
break;
}
@@ -4109,6 +4112,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,10 +4129,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4137,6 +4144,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4158,11 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
+
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4173,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,10 +4190,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4189,6 +4205,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4219,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.52.0
----Next_Part(Tue_Jun__2_13_43_56_2026_572)----
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH v2] Make propgraph object descriptions translatable
@ 2026-06-02 03:07 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-06-02 03:07 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
---
src/backend/catalog/objectaddress.c | 56 +++++++++++++++++++----------
1 file changed, 38 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..9eb574f5ccc 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,16 +4092,16 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tup);
break;
}
@@ -4109,6 +4112,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,10 +4129,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4137,6 +4144,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4158,11 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
+
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4173,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,10 +4190,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4189,6 +4205,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4219,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.52.0
----Next_Part(Tue_Jun__2_13_43_56_2026_572)----
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH v2] Make propgraph object descriptions translatable
@ 2026-06-02 03:07 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-06-02 03:07 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
---
src/backend/catalog/objectaddress.c | 56 +++++++++++++++++++----------
1 file changed, 38 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..9eb574f5ccc 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,16 +4092,16 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tup);
break;
}
@@ -4109,6 +4112,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,10 +4129,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4137,6 +4144,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4158,11 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
+
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4173,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,10 +4190,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4189,6 +4205,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4219,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.52.0
----Next_Part(Tue_Jun__2_13_43_56_2026_572)----
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH v2] Make propgraph object descriptions translatable
@ 2026-06-02 03:07 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-06-02 03:07 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
---
src/backend/catalog/objectaddress.c | 56 +++++++++++++++++++----------
1 file changed, 38 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..9eb574f5ccc 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,16 +4092,16 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tup);
break;
}
@@ -4109,6 +4112,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,10 +4129,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4137,6 +4144,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4158,11 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
+
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4173,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,10 +4190,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4189,6 +4205,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4219,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.52.0
----Next_Part(Tue_Jun__2_13_43_56_2026_572)----
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH v2] Make propgraph object descriptions translatable
@ 2026-06-02 03:07 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-06-02 03:07 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
---
src/backend/catalog/objectaddress.c | 56 +++++++++++++++++++----------
1 file changed, 38 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..9eb574f5ccc 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,16 +4092,16 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tup);
break;
}
@@ -4109,6 +4112,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,10 +4129,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4137,6 +4144,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4158,11 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
+
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4173,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,10 +4190,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4189,6 +4205,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4219,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.52.0
----Next_Part(Tue_Jun__2_13_43_56_2026_572)----
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH v2] Make propgraph object descriptions translatable
@ 2026-06-02 03:07 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-06-02 03:07 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
---
src/backend/catalog/objectaddress.c | 56 +++++++++++++++++++----------
1 file changed, 38 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..9eb574f5ccc 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,16 +4092,16 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tup);
break;
}
@@ -4109,6 +4112,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,10 +4129,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4137,6 +4144,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4158,11 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
+
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4173,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,10 +4190,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4189,6 +4205,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4219,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.52.0
----Next_Part(Tue_Jun__2_13_43_56_2026_572)----
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH v2] Make propgraph object descriptions translatable
@ 2026-06-02 03:07 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-06-02 03:07 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
---
src/backend/catalog/objectaddress.c | 56 +++++++++++++++++++----------
1 file changed, 38 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..9eb574f5ccc 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,16 +4092,16 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tup);
break;
}
@@ -4109,6 +4112,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,10 +4129,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4137,6 +4144,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4158,11 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
+
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4173,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,10 +4190,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4189,6 +4205,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4219,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.52.0
----Next_Part(Tue_Jun__2_13_43_56_2026_572)----
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH v2] Make propgraph object descriptions translatable
@ 2026-06-02 03:07 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-06-02 03:07 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
---
src/backend/catalog/objectaddress.c | 56 +++++++++++++++++++----------
1 file changed, 38 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..9eb574f5ccc 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,16 +4092,16 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tup);
break;
}
@@ -4109,6 +4112,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,10 +4129,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4137,6 +4144,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4158,11 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
+
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4173,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,10 +4190,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4189,6 +4205,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4219,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.52.0
----Next_Part(Tue_Jun__2_13_43_56_2026_572)----
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH v2] Make propgraph object descriptions translatable
@ 2026-06-02 03:07 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-06-02 03:07 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
---
src/backend/catalog/objectaddress.c | 56 +++++++++++++++++++----------
1 file changed, 38 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..9eb574f5ccc 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,16 +4092,16 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tup);
break;
}
@@ -4109,6 +4112,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,10 +4129,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4137,6 +4144,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4158,11 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
+
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4173,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,10 +4190,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4189,6 +4205,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4219,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.52.0
----Next_Part(Tue_Jun__2_13_43_56_2026_572)----
^ permalink raw reply [nested|flat] 648+ messages in thread
* [PATCH v2] Make propgraph object descriptions translatable
@ 2026-06-02 03:07 Kyotaro Horiguchi <horikyota.ntt@gmail.com>
0 siblings, 0 replies; 648+ messages in thread
From: Kyotaro Horiguchi @ 2026-06-02 03:07 UTC (permalink / raw)
getObjectDescription() currently constructs propgraph-related object
descriptions incrementally with appendStringInfo(). This effectively
fixes the word order in English, which makes the messages difficult to
translate naturally into languages such as Japanese.
---
src/backend/catalog/objectaddress.c | 56 +++++++++++++++++++----------
1 file changed, 38 insertions(+), 18 deletions(-)
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 050b7829eb0..9eb574f5ccc 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -4077,6 +4077,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tup;
Form_pg_propgraph_element pgeform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tup = SearchSysCache1(PROPGRAPHELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
@@ -4089,16 +4092,16 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgeform = (Form_pg_propgraph_element) GETSTRUCT(tup);
+ getRelationDescription(&objdesc, pgeform->pgepgid, false);
+
if (pgeform->pgekind == PGEKIND_VERTEX)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("vertex %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("vertex %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else if (pgeform->pgekind == PGEKIND_EDGE)
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("edge %s of "), NameStr(pgeform->pgealias));
+ appendStringInfo(&buffer, _("edge %s of %s"), NameStr(pgeform->pgealias), objdesc.data);
else
- appendStringInfo(&buffer, "??? element %s of ", NameStr(pgeform->pgealias));
- getRelationDescription(&buffer, pgeform->pgepgid, false);
+ appendStringInfo(&buffer, "??? element %s of %s", NameStr(pgeform->pgealias), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tup);
break;
}
@@ -4109,6 +4112,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_element_label pgelform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphElementLabelRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4125,10 +4129,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("label %s of "), get_propgraph_label_name(pgelform->pgellabelid));
- ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementRelationId,
+ pgelform->pgelelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("label %s of %s"), get_propgraph_label_name(pgelform->pgellabelid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4137,6 +4144,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_label pglform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHLABELOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4148,9 +4158,11 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pglform = (Form_pg_propgraph_label) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("label %s of "), NameStr(pglform->pgllabel));
- getRelationDescription(&buffer, pglform->pglpgid, false);
+ getRelationDescription(&objdesc, pglform->pglpgid, false);
+
+ appendStringInfo(&buffer, _("label %s of %s"), NameStr(pglform->pgllabel), objdesc.data);
+
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
@@ -4161,6 +4173,7 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
HeapTuple tuple;
Form_pg_propgraph_label_property plpform;
ObjectAddress oa;
+ char *objdesc;
rel = table_open(PropgraphLabelPropertyRelationId, AccessShareLock);
tuple = get_catalog_object_by_oid(rel,
@@ -4177,10 +4190,13 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tuple);
- appendStringInfo(&buffer, _("property %s of "), get_propgraph_property_name(plpform->plppropid));
- ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
- appendStringInfoString(&buffer, getObjectDescription(&oa, false));
+ ObjectAddressSet(oa, PropgraphElementLabelRelationId,
+ plpform->plpellabelid);
+ objdesc = getObjectDescription(&oa, false);
+ appendStringInfo(&buffer, _("property %s of %s"), get_propgraph_property_name(plpform->plppropid), objdesc);
+
+ pfree(objdesc);
table_close(rel, AccessShareLock);
break;
}
@@ -4189,6 +4205,9 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
{
HeapTuple tuple;
Form_pg_propgraph_property pgpform;
+ StringInfoData objdesc;
+
+ initStringInfo(&objdesc);
tuple = SearchSysCache1(PROPGRAPHPROPOID, ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tuple))
@@ -4200,9 +4219,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
pgpform = (Form_pg_propgraph_property) GETSTRUCT(tuple);
- /* translator: followed by, e.g., "property graph %s" */
- appendStringInfo(&buffer, _("property %s of "), NameStr(pgpform->pgpname));
- getRelationDescription(&buffer, pgpform->pgppgid, false);
+ getRelationDescription(&objdesc, pgpform->pgppgid, false);
+
+ appendStringInfo(&buffer, _("property %s of %s"), NameStr(pgpform->pgpname), objdesc.data);
+ pfree(objdesc.data);
ReleaseSysCache(tuple);
break;
}
--
2.52.0
----Next_Part(Tue_Jun__2_13_43_56_2026_572)----
^ permalink raw reply [nested|flat] 648+ messages in thread
end of thread, other threads:[~2026-06-02 03:07 UTC | newest]
Thread overview: 648+ messages (download: mbox mbox.gz follow: Atom feed)
-- links below jump to the message on this page --
2019-03-26 20:05 [PATCH v8 1/3] fix CompareIndexInfo-related bugs Alvaro Herrera <alvherre@alvh.no-ip.org>
2019-12-20 01:05 [PATCH v29 01/11] Add a syntax to create Incrementally Maintainable Materialized Views Yugo Nagata <nagata@sraoss.co.jp>
2026-05-26 07:14 [PATCH 1/4] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-05-26 07:14 [PATCH 1/4] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-05-26 07:14 [PATCH 1/4] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-05-26 07:14 [PATCH 1/4] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-05-26 07:14 [PATCH 1/4] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-05-26 07:14 [PATCH 1/4] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-05-26 07:14 [PATCH 1/4] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-05-26 07:14 [PATCH 1/4] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-05-26 07:14 [PATCH 1/4] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-05-26 07:14 [PATCH 1/4] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-05-26 07:14 [PATCH 1/4] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-05-26 07:14 [PATCH 1/4] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-05-26 07:14 [PATCH 1/4] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-05-26 07:14 [PATCH 1/4] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-05-26 07:14 [PATCH 1/4] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-05-26 07:14 [PATCH 1/4] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-05-26 07:14 [PATCH 1/4] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-05-26 07:14 [PATCH 1/4] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-05-26 07:14 [PATCH 1/4] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-05-26 07:14 [PATCH 1/4] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-05-26 07:14 [PATCH 1/4] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-05-26 07:14 [PATCH 1/4] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-05-26 07:14 [PATCH 1/4] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-05-26 07:14 [PATCH 1/4] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-05-26 07:14 [PATCH 1/4] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-05-26 07:14 [PATCH 1/4] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-05-26 07:14 [PATCH 1/4] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-05-26 07:14 [PATCH 1/4] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-05-26 07:14 [PATCH 1/4] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-05-26 07:14 [PATCH 1/4] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-05-26 07:14 [PATCH 1/4] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-05-26 07:14 [PATCH 1/4] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-05-26 07:14 [PATCH 1/4] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-05-26 07:14 [PATCH 1/4] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-05-26 07:14 [PATCH 1/4] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-05-26 07:14 [PATCH 1/4] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-05-26 07:14 [PATCH 1/4] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-05-26 07:14 [PATCH 1/4] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-05-26 07:14 [PATCH 1/4] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-05-26 07:14 [PATCH 1/4] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-05-26 07:14 [PATCH 1/4] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-05-26 07:14 [PATCH 1/4] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-05-26 07:14 [PATCH 1/4] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-05-26 07:14 [PATCH 1/4] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-05-26 07:14 [PATCH 1/4] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-05-26 07:14 [PATCH 1/4] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-05-26 07:14 [PATCH 1/4] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-05-26 07:14 [PATCH 1/4] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-05-26 07:14 [PATCH 1/4] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-05-26 07:14 [PATCH 1/4] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-05-26 07:14 [PATCH 1/4] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-05-26 07:14 [PATCH 1/4] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-05-26 07:14 [PATCH 1/4] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-05-26 07:14 [PATCH 1/4] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-05-26 07:14 [PATCH 1/4] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-05-26 07:14 [PATCH 1/4] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-05-26 07:14 [PATCH 1/4] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-05-26 07:14 [PATCH 1/4] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-05-26 07:14 [PATCH 1/4] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-05-26 07:14 [PATCH 1/4] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-05-26 07:14 [PATCH 1/4] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-05-26 07:14 [PATCH 1/4] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-05-26 07:14 [PATCH 1/4] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-05-26 07:14 [PATCH 1/4] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-05-26 07:14 [PATCH 1/4] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-05-26 07:14 [PATCH 1/4] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-05-26 07:14 [PATCH 1/4] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-05-26 07:14 [PATCH 1/4] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-05-26 07:14 [PATCH 1/4] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-05-26 07:14 [PATCH 1/4] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-05-26 07:14 [PATCH 1/4] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-05-26 07:14 [PATCH 1/4] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-05-26 07:14 [PATCH 1/4] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-05-26 07:14 [PATCH 1/4] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-05-26 07:14 [PATCH 1/4] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-05-26 07:14 [PATCH 1/4] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-05-26 07:14 [PATCH 1/4] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-05-26 07:14 [PATCH 1/4] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-05-26 07:14 [PATCH 1/4] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-05-26 07:14 [PATCH 1/4] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-05-26 07:14 [PATCH 1/4] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-05-26 07:14 [PATCH 1/4] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-05-26 07:14 [PATCH 1/4] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-05-26 07:14 [PATCH 1/4] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-05-26 07:14 [PATCH 1/4] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-05-26 07:14 [PATCH 1/4] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-05-26 07:14 [PATCH 1/4] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-05-26 07:14 [PATCH 1/4] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-05-26 07:14 [PATCH 1/4] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-05-26 07:14 [PATCH 1/4] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-05-26 07:14 [PATCH 1/4] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-05-26 07:14 [PATCH 1/4] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-05-26 07:14 [PATCH 1/4] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-05-26 07:14 [PATCH 1/4] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-05-26 07:14 [PATCH 1/4] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-05-26 07:14 [PATCH 1/4] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-05-26 07:14 [PATCH 1/4] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-05-26 07:14 [PATCH 1/4] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-05-26 07:14 [PATCH 1/4] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-05-26 07:14 [PATCH 1/4] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-05-26 07:14 [PATCH 1/4] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-05-26 07:14 [PATCH 1/4] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-05-26 07:14 [PATCH 1/4] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-05-26 07:14 [PATCH 1/4] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-05-26 07:14 [PATCH 1/4] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-05-26 07:14 [PATCH 1/4] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-05-26 07:14 [PATCH 1/4] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-05-26 07:14 [PATCH 1/4] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-05-26 07:14 [PATCH 1/4] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-05-26 07:14 [PATCH 1/4] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-05-26 07:14 [PATCH 1/4] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-05-26 07:14 [PATCH 1/4] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-05-26 07:14 [PATCH 1/4] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-05-26 07:14 [PATCH 1/4] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-05-26 07:14 [PATCH 1/4] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-05-26 07:14 [PATCH 1/4] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-05-26 07:14 [PATCH 1/4] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-05-26 07:14 [PATCH 1/4] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-05-26 07:14 [PATCH 1/4] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-05-26 07:14 [PATCH 1/4] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-05-26 07:14 [PATCH 1/4] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-05-26 07:14 [PATCH 1/4] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-05-26 07:14 [PATCH 1/4] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-05-26 07:14 [PATCH 1/4] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-05-26 07:14 [PATCH 1/4] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-05-26 07:14 [PATCH 1/4] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-05-26 07:14 [PATCH 1/4] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-05-26 07:14 [PATCH 1/4] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-05-26 07:14 [PATCH 1/4] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-05-26 07:14 [PATCH 1/4] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-05-26 07:14 [PATCH 1/4] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-05-26 07:14 [PATCH 1/4] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-05-26 07:14 [PATCH 1/4] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-05-26 07:14 [PATCH 1/4] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-05-26 07:14 [PATCH 1/4] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-05-26 07:14 [PATCH 1/4] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-05-26 07:14 [PATCH 1/4] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-05-26 07:14 [PATCH 1/4] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-05-26 07:14 [PATCH 1/4] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-05-26 07:14 [PATCH 1/4] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-05-26 07:14 [PATCH 1/4] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-05-26 07:14 [PATCH 1/4] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-05-26 07:14 [PATCH 1/4] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-05-26 07:14 [PATCH 1/4] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-05-26 07:14 [PATCH 1/4] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-05-26 07:14 [PATCH 1/4] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-05-26 07:14 [PATCH 1/4] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-05-26 07:14 [PATCH 1/4] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-05-26 07:14 [PATCH 1/4] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-05-26 07:14 [PATCH 1/4] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-05-26 07:14 [PATCH 1/4] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-05-26 07:14 [PATCH 1/4] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-05-26 07:14 [PATCH 1/4] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-05-26 07:14 [PATCH 1/4] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-05-26 07:14 [PATCH 1/4] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-05-26 07:14 [PATCH 1/4] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-05-26 07:14 [PATCH 1/4] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-05-26 07:14 [PATCH 1/4] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-05-26 07:14 [PATCH 1/4] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-05-26 07:14 [PATCH 1/4] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-05-26 07:14 [PATCH 1/4] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-05-26 07:14 [PATCH 1/4] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-05-26 07:14 [PATCH 1/4] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-05-26 07:14 [PATCH 1/4] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-05-26 07:14 [PATCH 1/4] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-05-26 07:14 [PATCH 1/4] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-05-26 07:14 [PATCH 1/4] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-05-26 07:14 [PATCH 1/4] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-05-26 07:14 [PATCH 1/4] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-05-26 07:14 [PATCH 1/4] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-05-26 07:14 [PATCH 1/4] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-05-26 07:14 [PATCH 1/4] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-05-26 07:14 [PATCH 1/4] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-05-26 07:14 [PATCH 1/4] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-05-26 07:14 [PATCH 1/4] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-05-26 07:14 [PATCH 1/4] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-05-26 07:14 [PATCH 1/4] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-05-26 07:14 [PATCH 1/4] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-05-26 07:14 [PATCH 1/4] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-05-26 07:14 [PATCH 1/4] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-05-26 07:14 [PATCH 1/4] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-05-26 07:14 [PATCH 1/4] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-05-26 07:14 [PATCH 1/4] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-05-26 07:14 [PATCH 1/4] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-05-26 07:14 [PATCH 1/4] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-05-26 07:14 [PATCH 1/4] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-05-26 07:14 [PATCH 1/4] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-05-26 07:14 [PATCH 1/4] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-05-26 07:14 [PATCH 1/4] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-05-26 07:14 [PATCH 1/4] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-05-26 07:14 [PATCH 1/4] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-05-26 07:14 [PATCH 1/4] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-05-26 07:14 [PATCH 1/4] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-05-26 07:14 [PATCH 1/4] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-05-26 07:14 [PATCH 1/4] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-05-26 07:14 [PATCH 1/4] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-05-26 07:14 [PATCH 1/4] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-05-26 07:14 [PATCH 1/4] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-05-26 07:14 [PATCH 1/4] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-05-26 07:14 [PATCH 1/4] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-05-26 07:14 [PATCH 1/4] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-05-26 07:14 [PATCH 1/4] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-05-26 07:14 [PATCH 1/4] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-05-26 07:14 [PATCH 1/4] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-05-26 07:14 [PATCH 1/4] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-05-26 07:14 [PATCH 1/4] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-05-26 07:14 [PATCH 1/4] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-05-26 07:14 [PATCH 1/4] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-05-26 07:14 [PATCH 1/4] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-05-26 07:14 [PATCH 1/4] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-05-26 07:14 [PATCH 1/4] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-05-26 07:14 [PATCH 1/4] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-05-26 07:14 [PATCH 1/4] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-05-26 07:14 [PATCH 1/4] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-05-26 07:14 [PATCH 1/4] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-05-26 07:14 [PATCH 1/4] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-05-26 07:14 [PATCH 1/4] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-05-26 07:14 [PATCH 1/4] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-05-26 07:14 [PATCH 1/4] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-05-26 07:14 [PATCH 1/4] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-05-26 07:14 [PATCH 1/4] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-05-26 07:14 [PATCH 1/4] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-05-26 07:14 [PATCH 1/4] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-05-26 07:14 [PATCH 1/4] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-05-26 07:14 [PATCH 1/4] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-05-26 07:14 [PATCH 1/4] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-05-26 07:14 [PATCH 1/4] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-05-26 07:14 [PATCH 1/4] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-05-26 07:14 [PATCH 1/4] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-05-26 07:14 [PATCH 1/4] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-05-26 07:14 [PATCH 1/4] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-05-26 07:14 [PATCH 1/4] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-05-26 07:14 [PATCH 1/4] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-05-26 07:14 [PATCH 1/4] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-05-26 07:14 [PATCH 1/4] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-05-26 07:14 [PATCH 1/4] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-05-26 07:14 [PATCH 1/4] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-05-26 07:14 [PATCH 1/4] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-05-26 07:14 [PATCH 1/4] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-05-26 07:14 [PATCH 1/4] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-05-26 07:14 [PATCH 1/4] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-05-26 07:14 [PATCH 1/4] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-05-26 07:14 [PATCH 1/4] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-05-26 07:14 [PATCH 1/4] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-05-26 07:14 [PATCH 1/4] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-05-26 07:14 [PATCH 1/4] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-05-26 07:14 [PATCH 1/4] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-05-26 07:14 [PATCH 1/4] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-05-26 07:14 [PATCH 1/4] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-05-26 07:14 [PATCH 1/4] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-05-26 07:14 [PATCH 1/4] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-05-26 07:14 [PATCH 1/4] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-05-26 07:14 [PATCH 1/4] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-05-26 07:14 [PATCH 1/4] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-05-26 07:14 [PATCH 1/4] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-05-26 07:14 [PATCH 1/4] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-05-26 07:14 [PATCH 1/4] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-05-26 07:14 [PATCH 1/4] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-05-26 07:14 [PATCH 1/4] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-05-26 07:14 [PATCH 1/4] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-05-26 07:14 [PATCH 1/4] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-05-26 07:14 [PATCH 1/4] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-05-26 07:14 [PATCH 1/4] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-05-26 07:14 [PATCH 1/4] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-05-26 07:14 [PATCH 1/4] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-05-26 07:14 [PATCH 1/4] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-05-26 07:14 [PATCH 1/4] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-05-26 07:14 [PATCH 1/4] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-05-26 07:14 [PATCH 1/4] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-05-26 07:14 [PATCH 1/4] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-05-26 07:14 [PATCH 1/4] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-05-26 07:14 [PATCH 1/4] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-05-26 07:14 [PATCH 1/4] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-05-26 07:14 [PATCH 1/4] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-05-26 07:14 [PATCH 1/4] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-05-26 07:14 [PATCH 1/4] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-05-26 07:14 [PATCH 1/4] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-05-26 07:14 [PATCH 1/4] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-05-26 07:14 [PATCH 1/4] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-05-26 07:14 [PATCH 1/4] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-05-26 07:14 [PATCH 1/4] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-05-26 07:14 [PATCH 1/4] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-05-26 07:14 [PATCH 1/4] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-05-26 07:14 [PATCH 1/4] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-05-26 07:14 [PATCH 1/4] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-05-26 07:14 [PATCH 1/4] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-05-26 07:14 [PATCH 1/4] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-05-26 07:14 [PATCH 1/4] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-05-26 07:14 [PATCH 1/4] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-05-26 07:14 [PATCH 1/4] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-05-26 07:14 [PATCH 1/4] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-05-26 07:14 [PATCH 1/4] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-05-26 07:14 [PATCH 1/4] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-05-26 07:14 [PATCH 1/4] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-05-26 07:14 [PATCH 1/4] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-05-26 07:14 [PATCH 1/4] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-05-26 07:14 [PATCH 1/4] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-05-26 07:14 [PATCH 1/4] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-05-26 07:14 [PATCH 1/4] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-05-26 07:14 [PATCH 1/4] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-05-26 07:14 [PATCH 1/4] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-05-26 07:14 [PATCH 1/4] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-05-26 07:14 [PATCH 1/4] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-05-26 07:14 [PATCH 1/4] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-05-26 07:14 [PATCH 1/4] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-05-26 07:14 [PATCH 1/4] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-05-26 07:14 [PATCH 1/4] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-05-26 07:14 [PATCH 1/4] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-05-26 07:14 [PATCH 1/4] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-05-26 07:14 [PATCH 1/4] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-05-26 07:14 [PATCH 1/4] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-05-26 07:14 [PATCH 1/4] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-05-26 07:14 [PATCH 1/4] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-05-26 07:14 [PATCH 1/4] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-05-26 07:14 [PATCH 1/4] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-05-26 07:14 [PATCH 1/4] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-05-26 07:14 [PATCH 1/4] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-05-26 07:14 [PATCH 1/4] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-05-26 07:14 [PATCH 1/4] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-05-26 07:14 [PATCH 1/4] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-05-26 07:14 [PATCH 1/4] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-05-26 07:14 [PATCH 1/4] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-05-26 07:14 [PATCH 1/4] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-06-02 03:07 [PATCH v2] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-06-02 03:07 [PATCH v2] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-06-02 03:07 [PATCH v2] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-06-02 03:07 [PATCH v2] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-06-02 03:07 [PATCH v2] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-06-02 03:07 [PATCH v2] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-06-02 03:07 [PATCH v2] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-06-02 03:07 [PATCH v2] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-06-02 03:07 [PATCH v2] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-06-02 03:07 [PATCH v2] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-06-02 03:07 [PATCH v2] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-06-02 03:07 [PATCH v2] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-06-02 03:07 [PATCH v2] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-06-02 03:07 [PATCH v2] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-06-02 03:07 [PATCH v2] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-06-02 03:07 [PATCH v2] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-06-02 03:07 [PATCH v2] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-06-02 03:07 [PATCH v2] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-06-02 03:07 [PATCH v2] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-06-02 03:07 [PATCH v2] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-06-02 03:07 [PATCH v2] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-06-02 03:07 [PATCH v2] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-06-02 03:07 [PATCH v2] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-06-02 03:07 [PATCH v2] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-06-02 03:07 [PATCH v2] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-06-02 03:07 [PATCH v2] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-06-02 03:07 [PATCH v2] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-06-02 03:07 [PATCH v2] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-06-02 03:07 [PATCH v2] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-06-02 03:07 [PATCH v2] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-06-02 03:07 [PATCH v2] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-06-02 03:07 [PATCH v2] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-06-02 03:07 [PATCH v2] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-06-02 03:07 [PATCH v2] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-06-02 03:07 [PATCH v2] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-06-02 03:07 [PATCH v2] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-06-02 03:07 [PATCH v2] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-06-02 03:07 [PATCH v2] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-06-02 03:07 [PATCH v2] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-06-02 03:07 [PATCH v2] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-06-02 03:07 [PATCH v2] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-06-02 03:07 [PATCH v2] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-06-02 03:07 [PATCH v2] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-06-02 03:07 [PATCH v2] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-06-02 03:07 [PATCH v2] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-06-02 03:07 [PATCH v2] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-06-02 03:07 [PATCH v2] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-06-02 03:07 [PATCH v2] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-06-02 03:07 [PATCH v2] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-06-02 03:07 [PATCH v2] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-06-02 03:07 [PATCH v2] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-06-02 03:07 [PATCH v2] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-06-02 03:07 [PATCH v2] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-06-02 03:07 [PATCH v2] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-06-02 03:07 [PATCH v2] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-06-02 03:07 [PATCH v2] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-06-02 03:07 [PATCH v2] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-06-02 03:07 [PATCH v2] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-06-02 03:07 [PATCH v2] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-06-02 03:07 [PATCH v2] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-06-02 03:07 [PATCH v2] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-06-02 03:07 [PATCH v2] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-06-02 03:07 [PATCH v2] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-06-02 03:07 [PATCH v2] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-06-02 03:07 [PATCH v2] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-06-02 03:07 [PATCH v2] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-06-02 03:07 [PATCH v2] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-06-02 03:07 [PATCH v2] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-06-02 03:07 [PATCH v2] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-06-02 03:07 [PATCH v2] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-06-02 03:07 [PATCH v2] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-06-02 03:07 [PATCH v2] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-06-02 03:07 [PATCH v2] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-06-02 03:07 [PATCH v2] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-06-02 03:07 [PATCH v2] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-06-02 03:07 [PATCH v2] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-06-02 03:07 [PATCH v2] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-06-02 03:07 [PATCH v2] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-06-02 03:07 [PATCH v2] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-06-02 03:07 [PATCH v2] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-06-02 03:07 [PATCH v2] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-06-02 03:07 [PATCH v2] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-06-02 03:07 [PATCH v2] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-06-02 03:07 [PATCH v2] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-06-02 03:07 [PATCH v2] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-06-02 03:07 [PATCH v2] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-06-02 03:07 [PATCH v2] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-06-02 03:07 [PATCH v2] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-06-02 03:07 [PATCH v2] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-06-02 03:07 [PATCH v2] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-06-02 03:07 [PATCH v2] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-06-02 03:07 [PATCH v2] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-06-02 03:07 [PATCH v2] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-06-02 03:07 [PATCH v2] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-06-02 03:07 [PATCH v2] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-06-02 03:07 [PATCH v2] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-06-02 03:07 [PATCH v2] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-06-02 03:07 [PATCH v2] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-06-02 03:07 [PATCH v2] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-06-02 03:07 [PATCH v2] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-06-02 03:07 [PATCH v2] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-06-02 03:07 [PATCH v2] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-06-02 03:07 [PATCH v2] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-06-02 03:07 [PATCH v2] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-06-02 03:07 [PATCH v2] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-06-02 03:07 [PATCH v2] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-06-02 03:07 [PATCH v2] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-06-02 03:07 [PATCH v2] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-06-02 03:07 [PATCH v2] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-06-02 03:07 [PATCH v2] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-06-02 03:07 [PATCH v2] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-06-02 03:07 [PATCH v2] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-06-02 03:07 [PATCH v2] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-06-02 03:07 [PATCH v2] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-06-02 03:07 [PATCH v2] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-06-02 03:07 [PATCH v2] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-06-02 03:07 [PATCH v2] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-06-02 03:07 [PATCH v2] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-06-02 03:07 [PATCH v2] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-06-02 03:07 [PATCH v2] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-06-02 03:07 [PATCH v2] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-06-02 03:07 [PATCH v2] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-06-02 03:07 [PATCH v2] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-06-02 03:07 [PATCH v2] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-06-02 03:07 [PATCH v2] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-06-02 03:07 [PATCH v2] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-06-02 03:07 [PATCH v2] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-06-02 03:07 [PATCH v2] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-06-02 03:07 [PATCH v2] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-06-02 03:07 [PATCH v2] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-06-02 03:07 [PATCH v2] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-06-02 03:07 [PATCH v2] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-06-02 03:07 [PATCH v2] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-06-02 03:07 [PATCH v2] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-06-02 03:07 [PATCH v2] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-06-02 03:07 [PATCH v2] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-06-02 03:07 [PATCH v2] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-06-02 03:07 [PATCH v2] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-06-02 03:07 [PATCH v2] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-06-02 03:07 [PATCH v2] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-06-02 03:07 [PATCH v2] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-06-02 03:07 [PATCH v2] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-06-02 03:07 [PATCH v2] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-06-02 03:07 [PATCH v2] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-06-02 03:07 [PATCH v2] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-06-02 03:07 [PATCH v2] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-06-02 03:07 [PATCH v2] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-06-02 03:07 [PATCH v2] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-06-02 03:07 [PATCH v2] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-06-02 03:07 [PATCH v2] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-06-02 03:07 [PATCH v2] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-06-02 03:07 [PATCH v2] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-06-02 03:07 [PATCH v2] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-06-02 03:07 [PATCH v2] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-06-02 03:07 [PATCH v2] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-06-02 03:07 [PATCH v2] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-06-02 03:07 [PATCH v2] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-06-02 03:07 [PATCH v2] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-06-02 03:07 [PATCH v2] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-06-02 03:07 [PATCH v2] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-06-02 03:07 [PATCH v2] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-06-02 03:07 [PATCH v2] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-06-02 03:07 [PATCH v2] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-06-02 03:07 [PATCH v2] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-06-02 03:07 [PATCH v2] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-06-02 03:07 [PATCH v2] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-06-02 03:07 [PATCH v2] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-06-02 03:07 [PATCH v2] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-06-02 03:07 [PATCH v2] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-06-02 03:07 [PATCH v2] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-06-02 03:07 [PATCH v2] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-06-02 03:07 [PATCH v2] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-06-02 03:07 [PATCH v2] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-06-02 03:07 [PATCH v2] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-06-02 03:07 [PATCH v2] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-06-02 03:07 [PATCH v2] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-06-02 03:07 [PATCH v2] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-06-02 03:07 [PATCH v2] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-06-02 03:07 [PATCH v2] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-06-02 03:07 [PATCH v2] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-06-02 03:07 [PATCH v2] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-06-02 03:07 [PATCH v2] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-06-02 03:07 [PATCH v2] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-06-02 03:07 [PATCH v2] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-06-02 03:07 [PATCH v2] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-06-02 03:07 [PATCH v2] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-06-02 03:07 [PATCH v2] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-06-02 03:07 [PATCH v2] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-06-02 03:07 [PATCH v2] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-06-02 03:07 [PATCH v2] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-06-02 03:07 [PATCH v2] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-06-02 03:07 [PATCH v2] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-06-02 03:07 [PATCH v2] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-06-02 03:07 [PATCH v2] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-06-02 03:07 [PATCH v2] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-06-02 03:07 [PATCH v2] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-06-02 03:07 [PATCH v2] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-06-02 03:07 [PATCH v2] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-06-02 03:07 [PATCH v2] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-06-02 03:07 [PATCH v2] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-06-02 03:07 [PATCH v2] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-06-02 03:07 [PATCH v2] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-06-02 03:07 [PATCH v2] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-06-02 03:07 [PATCH v2] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-06-02 03:07 [PATCH v2] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-06-02 03:07 [PATCH v2] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-06-02 03:07 [PATCH v2] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-06-02 03:07 [PATCH v2] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-06-02 03:07 [PATCH v2] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-06-02 03:07 [PATCH v2] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-06-02 03:07 [PATCH v2] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-06-02 03:07 [PATCH v2] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-06-02 03:07 [PATCH v2] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-06-02 03:07 [PATCH v2] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-06-02 03:07 [PATCH v2] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-06-02 03:07 [PATCH v2] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-06-02 03:07 [PATCH v2] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-06-02 03:07 [PATCH v2] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-06-02 03:07 [PATCH v2] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-06-02 03:07 [PATCH v2] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-06-02 03:07 [PATCH v2] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-06-02 03:07 [PATCH v2] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-06-02 03:07 [PATCH v2] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-06-02 03:07 [PATCH v2] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-06-02 03:07 [PATCH v2] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-06-02 03:07 [PATCH v2] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-06-02 03:07 [PATCH v2] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-06-02 03:07 [PATCH v2] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-06-02 03:07 [PATCH v2] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-06-02 03:07 [PATCH v2] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-06-02 03:07 [PATCH v2] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-06-02 03:07 [PATCH v2] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-06-02 03:07 [PATCH v2] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-06-02 03:07 [PATCH v2] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-06-02 03:07 [PATCH v2] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-06-02 03:07 [PATCH v2] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-06-02 03:07 [PATCH v2] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-06-02 03:07 [PATCH v2] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-06-02 03:07 [PATCH v2] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-06-02 03:07 [PATCH v2] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-06-02 03:07 [PATCH v2] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-06-02 03:07 [PATCH v2] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-06-02 03:07 [PATCH v2] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-06-02 03:07 [PATCH v2] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-06-02 03:07 [PATCH v2] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-06-02 03:07 [PATCH v2] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-06-02 03:07 [PATCH v2] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-06-02 03:07 [PATCH v2] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-06-02 03:07 [PATCH v2] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-06-02 03:07 [PATCH v2] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-06-02 03:07 [PATCH v2] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-06-02 03:07 [PATCH v2] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-06-02 03:07 [PATCH v2] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-06-02 03:07 [PATCH v2] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-06-02 03:07 [PATCH v2] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-06-02 03:07 [PATCH v2] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-06-02 03:07 [PATCH v2] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-06-02 03:07 [PATCH v2] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-06-02 03:07 [PATCH v2] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-06-02 03:07 [PATCH v2] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-06-02 03:07 [PATCH v2] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-06-02 03:07 [PATCH v2] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-06-02 03:07 [PATCH v2] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-06-02 03:07 [PATCH v2] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-06-02 03:07 [PATCH v2] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-06-02 03:07 [PATCH v2] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-06-02 03:07 [PATCH v2] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-06-02 03:07 [PATCH v2] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-06-02 03:07 [PATCH v2] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-06-02 03:07 [PATCH v2] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-06-02 03:07 [PATCH v2] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-06-02 03:07 [PATCH v2] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-06-02 03:07 [PATCH v2] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-06-02 03:07 [PATCH v2] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-06-02 03:07 [PATCH v2] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-06-02 03:07 [PATCH v2] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-06-02 03:07 [PATCH v2] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-06-02 03:07 [PATCH v2] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-06-02 03:07 [PATCH v2] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-06-02 03:07 [PATCH v2] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-06-02 03:07 [PATCH v2] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-06-02 03:07 [PATCH v2] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-06-02 03:07 [PATCH v2] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-06-02 03:07 [PATCH v2] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-06-02 03:07 [PATCH v2] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-06-02 03:07 [PATCH v2] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-06-02 03:07 [PATCH v2] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-06-02 03:07 [PATCH v2] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-06-02 03:07 [PATCH v2] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-06-02 03:07 [PATCH v2] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-06-02 03:07 [PATCH v2] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-06-02 03:07 [PATCH v2] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-06-02 03:07 [PATCH v2] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-06-02 03:07 [PATCH v2] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-06-02 03:07 [PATCH v2] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-06-02 03:07 [PATCH v2] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-06-02 03:07 [PATCH v2] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-06-02 03:07 [PATCH v2] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-06-02 03:07 [PATCH v2] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-06-02 03:07 [PATCH v2] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-06-02 03:07 [PATCH v2] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-06-02 03:07 [PATCH v2] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-06-02 03:07 [PATCH v2] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-06-02 03:07 [PATCH v2] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-06-02 03:07 [PATCH v2] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-06-02 03:07 [PATCH v2] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-06-02 03:07 [PATCH v2] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-06-02 03:07 [PATCH v2] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-06-02 03:07 [PATCH v2] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-06-02 03:07 [PATCH v2] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-06-02 03:07 [PATCH v2] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-06-02 03:07 [PATCH v2] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-06-02 03:07 [PATCH v2] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-06-02 03:07 [PATCH v2] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-06-02 03:07 [PATCH v2] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-06-02 03:07 [PATCH v2] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-06-02 03:07 [PATCH v2] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-06-02 03:07 [PATCH v2] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-06-02 03:07 [PATCH v2] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-06-02 03:07 [PATCH v2] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-06-02 03:07 [PATCH v2] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-06-02 03:07 [PATCH v2] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
2026-06-02 03:07 [PATCH v2] Make propgraph object descriptions translatable Kyotaro Horiguchi <horikyota.ntt@gmail.com>
This inbox is served by agora; see mirroring instructions
for how to clone and mirror all data and code used for this inbox