Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1wWewh-002ll5-31 for pgsql-hackers@arkaria.postgresql.org; Mon, 08 Jun 2026 18:43:35 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1wWewg-003Xlp-2j for pgsql-hackers@arkaria.postgresql.org; Mon, 08 Jun 2026 18:43:34 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1wWewg-003Xlf-1n for pgsql-hackers@lists.postgresql.org; Mon, 08 Jun 2026 18:43:34 +0000 Received: from sss.pgh.pa.us ([68.162.161.243]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.98.2) (envelope-from ) id 1wWewZ-000000021Ah-1jmh for pgsql-hackers@lists.postgresql.org; Mon, 08 Jun 2026 18:43:29 +0000 Received: from sss1.sss.pgh.pa.us (localhost [127.0.0.1]) by sss.pgh.pa.us (8.18.1/8.18.1) with ESMTP id 658IhMp9581649; Mon, 8 Jun 2026 14:43:22 -0400 From: Tom Lane To: Ashutosh Bapat cc: Michael Paquier , Peter Eisentraut , Alex Guo , Bertrand Drouvot , pgsql-hackers@lists.postgresql.org Subject: Re: Fix DROP PROPERTY GRAPH "unsupported object class" error In-reply-to: References: <29c33fb6-4200-4a08-be3d-a1a2ceef23b8@eisentraut.org> <200148.1780878520@sss.pgh.pa.us> Comments: In-reply-to Ashutosh Bapat message dated "Mon, 08 Jun 2026 10:29:09 +0530" MIME-Version: 1.0 Content-Type: text/plain; charset="UTF-8" Content-ID: <581647.1780944202.1@sss.pgh.pa.us> Content-Transfer-Encoding: 8bit Date: Mon, 08 Jun 2026 14:43:22 -0400 Message-ID: <581648.1780944202@sss.pgh.pa.us> List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk Ashutosh Bapat writes: > On Mon, Jun 8, 2026 at 5:58 AM Tom Lane wrote: >> No. At the very least, these messages violate our style guidelines [1]: > My guess is Michael and Tom are referring to two different things. I > guess, the output that Michael refers to is the value of the Identity > column from pg_identify_object() (in create_property_graph.out). I > guess what Tom is referring to is the object description in server > error messages, which uses getObjectDescription() underneath, which in > turn is also called from pg_describe_object(). > create_property_graph.out has outputs from both pg_describe_object() > and pg_identify_object(). It's easy to get confused between outputs of > both when the outputs are pasted without the query which generated the > output. Okay, I see that these are coming from pg_identify_object(), while pg_describe_object() is more verbose. However, I don't think that that ends the discussion, because existing cases in pg_identify_object are not entirely uniform in their succinctness. You quoted some cases that support a minimalistic style, but there are others, notably: case AccessMethodOperatorRelationId produces "operator %d (%s, %s) of %s" while case AccessMethodProcedureRelationId produces "function %d (%s, %s) of %s" case AuthMemRelationId produces "membership of role %s in role %s" (hmm, this one is wrong anyway, since it then translates that string) case UserMappingRelationId produces "%s on server %s" case PublicationNamespaceRelationId produces "%s in publication %s" as does case PublicationRelRelationId Each of these has chosen to include an object-type name so that people won't be totally confused about what's what. So I think we're grading on a curve to some extent here, and it certainly seems to me that these property-graph identifiers are confusing enough that they deserve more than zero info about which identifier is what. I don't think that "C on R" is terribly confusing about the identity of a constraint, but I totally disagree that "property graph label property" is sufficient context to disambiguate "k2 of e of e of create_property_graph_tests.gt". The argument that these only need to be machine-readable doesn't sway me a lot. In the end, any code that is disassembling these strings is going to be written by a human, and the human is a lot more likely to make a mistake about which identifier is which if they're not labeled. regards, tom lane