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 1wGtoa-006fgy-0A for pgsql-hackers@arkaria.postgresql.org; Sun, 26 Apr 2026 07:22:04 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1wGtoZ-00A0rm-0R for pgsql-hackers@arkaria.postgresql.org; Sun, 26 Apr 2026 07:22:03 +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 1wGtoY-00A0rP-2H for pgsql-hackers@lists.postgresql.org; Sun, 26 Apr 2026 07:22:02 +0000 Received: from mail-pj1-x1031.google.com ([2607:f8b0:4864:20::1031]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.98.2) (envelope-from ) id 1wGtoW-000000038BD-1ONE for pgsql-hackers@lists.postgresql.org; Sun, 26 Apr 2026 07:22:02 +0000 Received: by mail-pj1-x1031.google.com with SMTP id 98e67ed59e1d1-35da9692ec3so7895115a91.1 for ; Sun, 26 Apr 2026 00:21:59 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1777188117; x=1777792917; darn=lists.postgresql.org; h=references:to:cc:in-reply-to:date:subject:mime-version:message-id :from:from:to:cc:subject:date:message-id:reply-to; bh=maQRbgWvi80Rk7tQIvpxvZ7iR9R/VK69l6jXvvg91c4=; b=oPKhW2IeA+dV4QRrmB4jCfCUg7AH5OhcDjXN2Uoai3DGG47ffDs/OWQSPSFjUi7Y3Z lTGvtSoIY7P87exSswg7Y60N/YolYp6MGtMthv87kJkRDUB3HeNN0JvaX9FfC3/Ll2u+ ycLjk/JUrFKXNomDtczpxS/YDwqvsCYGkQBjDxtxqAbYYffz8z5RHXUErIaVNXDUNrBg cDCPXm8063B4HKSg4nq0a3rAypjdPNE802+5jilK+NPe7VdQ7W1oa+PhiVc6NZLxqI9l srtrjh8Oga001gwJSfGyBd9jShk5+tk30hjRmLVO0kJG5QhbvheU86wpxIjgeGrNtmE6 AcTg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1777188117; x=1777792917; h=references:to:cc:in-reply-to:date:subject:mime-version:message-id :from:x-gm-gg:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=maQRbgWvi80Rk7tQIvpxvZ7iR9R/VK69l6jXvvg91c4=; b=e3T/gMVwHvD2cwdeXY8cBFVxm1VDo0K8+QHF5+UQhoEt430He1S95g3WeHS1qftOZk WcVRSu++PbPm0qDoS1VVpH/FBNYqCF7ZI5HaHgomtK26bK1VW6SodPSGNVwrzr0i7oni 439TlImGwT+wRDUhZziXYu0+DvwnlMlx+9HktDv1+kSEiF16FxCuaNw32c+AOHMAC7vJ A/6R7Nq8r0+nloZRwvW3OaxnXbfTkWphWaer0XTf+AC2CvEukFsd5XADXt2FQTGGapZI 0I37OoKWmrSFMTHRp5q9DG5BMqEW/fKyjB+BdpXRD6E/dVPSV9K6US/2DtA0zHyN+8vk lt0A== X-Gm-Message-State: AOJu0Yx3+qfqllLcyo1ZyROm1JFdqlG9wOoX22Y4rrH5+LULllChaaJW SixeqRBnQ/+vYcBOL5J0qbn7c+X4Z5CguFWMUXxDeBYQzJmyrXieEiGA X-Gm-Gg: AeBDietBGfRAMaYVZQS+v010hjz4IzJjkMPjnZ1tuHvo2W71FuCDbhGY1oOMQvpoKie gAxFTzpTQEMrJUjKmPnPy5Nf4KZsv8u38lBpsscwizuMlbc2nigR21M/rdLOPgJA+jJP0bJvek1 cL7KkeCPw0DPauKDoOH4VUTE5/m6PA+OY0ybpUiUG7LxqGQ/xxEHieUC6B7fMjofybAgOPsvi5U +wUIaer6wjObzqouRGTYnqOBSce56Y3sxOqj7Z6A/qYECTS5jA+INOAGkf+KNK6U3nyDQrWKI+g fje3Ec+rS4xSTmV29GWzTM2rrzHIPTg0ZetxXF0YvXPExF98R7PY6SsSm7LfbyF7hIu5YNKBz7Y xRcqkRKoB3L6DNiWFqZN7XfHAHysPZFXyOetWUCv29GDQyyNA2wOrD+rUqG5ikArGXBpH2mYBqv Luu33FRcadZNz8h8kBnjTG3Tgo2WulGs7L6rcpMmipVg== X-Received: by 2002:a17:90b:2ecc:b0:35a:1762:92fc with SMTP id 98e67ed59e1d1-361404a0678mr40118788a91.26.1777188116955; Sun, 26 Apr 2026 00:21:56 -0700 (PDT) Received: from smtpclient.apple ([45.32.121.103]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-36141973c57sm27704038a91.14.2026.04.26.00.21.52 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Sun, 26 Apr 2026 00:21:55 -0700 (PDT) From: Chao Li Message-Id: Content-Type: multipart/mixed; boundary="Apple-Mail=_A6E72C2C-BD17-4954-9853-399FCB2F981C" Mime-Version: 1.0 (Mac OS X Mail 16.0 \(3864.400.21\)) Subject: Re: Property graph: fix error handling when dropping non-existent label property Date: Sun, 26 Apr 2026 15:21:14 +0800 In-Reply-To: Cc: PostgreSQL Hackers To: Ashutosh Bapat References: <1DA5D52A-4AFA-426E-83F7-42ED974D682B@gmail.com> X-Mailer: Apple Mail (2.3864.400.21) List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --Apple-Mail=_A6E72C2C-BD17-4954-9853-399FCB2F981C Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset=utf-8 > On Apr 24, 2026, at 20:38, Ashutosh Bapat = wrote: >=20 > On Fri, Apr 24, 2026 at 1:03=E2=80=AFPM Chao Li = wrote: >>=20 >> Hi, >>=20 >> I am testing graph tables today and noticed an improper error message = when dropping a property. >>=20 >> Here is a simple repro: >> ``` >> evantest=3D# CREATE TABLE t1 (a int PRIMARY KEY, b int); >> CREATE TABLE >> evantest=3D# >> evantest=3D# CREATE PROPERTY GRAPH g >> evantest-# VERTEX TABLES ( >> evantest(# t1 >> evantest(# LABEL l1 PROPERTIES (a AS p1) >> evantest(# LABEL l2 PROPERTIES (b AS p2) >> evantest(# ); >> CREATE PROPERTY GRAPH >> evantest=3D# >> evantest=3D# ALTER PROPERTY GRAPH g >> evantest-# ALTER VERTEX TABLE t1 >> evantest-# ALTER LABEL l1 DROP PROPERTIES (p2); >> ERROR: could not find tuple for label property 0 >> ``` >>=20 >> This does not look like a normal user-facing SQL error message. >>=20 >> Looking into the code, AlterPropGraph() checks whether the property = exists in the graph, but does not check if label property exists. As a = result, InvalidOid can be passed to ObjectAddressSet() and then to = performDeletion(). >>=20 >> The fix is simple, just check the label-property OID before trying to = delete it. I also added a regress test. >>=20 >> With the patch, the error becomes: >> ``` >> evantest=3D# ALTER PROPERTY GRAPH g >> evantest-# ALTER VERTEX TABLE t1 >> evantest-# ALTER LABEL l1 DROP PROPERTIES (p2); >> ERROR: property graph "g" element "t1" label "l1" has no property = "p2" >> ``` >=20 > Thanks for the report. Agree that we need to provide a correct error > message. The code changes look good to me. Cool! Thanks for reviewing and confirming. > However, the way you have > written this code is different from similar code earlier in the > function. Either your code should match that style or that code should > be changed to your style. I like your way - reduces code a bit and > does not repeat ereport. I also noticed that the code to fetch the > element label oid from element_alias and label name is repeated along > with the ereport in a few places. I think we could instead write a > function to do that and call that function in those places. When > writing the function, we could change that code to use your style. I updated the nearby code to align with my style. PFA v2. Best regards, -- Chao Li (Evan) HighGo Software Co., Ltd. https://www.highgo.com/ --Apple-Mail=_A6E72C2C-BD17-4954-9853-399FCB2F981C Content-Disposition: attachment; filename=v2-0001-Fix-DROP-PROPERTIES-check-for-property-graph-labe.patch Content-Type: application/octet-stream; x-unix-mode=0644; name="v2-0001-Fix-DROP-PROPERTIES-check-for-property-graph-labe.patch" Content-Transfer-Encoding: quoted-printable =46rom=204eba672374aac4274bd355e183fb09c7a20a60dd=20Mon=20Sep=2017=20= 00:00:00=202001=0AFrom:=20"Chao=20Li=20(Evan)"=20=0A= Date:=20Fri,=2024=20Apr=202026=2015:12:17=20+0800=0ASubject:=20[PATCH=20= v2]=20Fix=20DROP=20PROPERTIES=20check=20for=20property=20graph=20labels=0A= =0AWhen=20ALTER=20PROPERTY=20GRAPH=20...=20DROP=20PROPERTIES=20drops=20a=20= property=20from=20a=0Alabel,=20the=20code=20checked=20only=20whether=20= the=20property=20existed=20in=20the=20graph's=0Aproperty=20catalog.=20It=20= did=20not=20verify=20that=20the=20property=20was=20actually=0Aassociated=20= with=20the=20target=20label.=0A=0AAs=20a=20result,=20if=20the=20property=20= was=20not=20present=20on=20the=20label,=0A= GetSysCacheOid2(PROPGRAPHLABELPROP,=20...)=20could=20return=20= InvalidOid,=20which=0Awas=20then=20passed=20to=20performDeletion().=0A=0A= Check=20the=20label-property=20mapping=20explicitly=20and=20report=20an=20= undefined=0Aproperty=20error=20when=20it=20is=20missing.=20Add=20a=20= regression=20test=20for=20dropping=20a=0Anonexistent=20property=20from=20= a=20label.=0A=0AAuthor:=20Chao=20Li=20=0AReviewed-by:=20= Ashutosh=20Bapat=20=0ADiscussion:=20= https://postgr.es/m/1DA5D52A-4AFA-426E-83F7-42ED974D682B@gmail.com=0A---=0A= =20src/backend/commands/propgraphcmds.c=20=20=20=20=20=20=20=20=20=20|=20= 71=20++++++++-----------=0A=20.../expected/create_property_graph.out=20=20= =20=20=20=20=20=20|=20=202=20+=0A=20= .../regress/sql/create_property_graph.sql=20=20=20=20=20|=20=201=20+=0A=20= 3=20files=20changed,=2034=20insertions(+),=2040=20deletions(-)=0A=0Adiff=20= --git=20a/src/backend/commands/propgraphcmds.c=20= b/src/backend/commands/propgraphcmds.c=0Aindex=20= 6d509fccf46..bdf8dd75b0e=20100644=0A---=20= a/src/backend/commands/propgraphcmds.c=0A+++=20= b/src/backend/commands/propgraphcmds.c=0A@@=20-1491,7=20+1491,7=20@@=20= AlterPropGraph(ParseState=20*pstate,=20const=20AlterPropGraphStmt=20= *stmt)=0A=20=09{=0A=20=09=09Oid=09=09=09peoid;=0A=20=09=09Oid=09=09=09= labeloid;=0A-=09=09Oid=09=09=09ellabeloid;=0A+=09=09Oid=09=09=09= ellabeloid=20=3D=20InvalidOid;=0A=20=09=09ObjectAddress=20obj;=0A=20=0A=20= =09=09if=20(stmt->element_kind=20=3D=3D=20PROPGRAPH_ELEMENT_KIND_VERTEX)=0A= @@=20-1503,19=20+1503,14=20@@=20AlterPropGraph(ParseState=20*pstate,=20= const=20AlterPropGraphStmt=20*stmt)=0A=20=09=09=09=09=09=09=09=09=20=20=20= Anum_pg_propgraph_label_oid,=0A=20=09=09=09=09=09=09=09=09=20=20=20= ObjectIdGetDatum(pgrelid),=0A=20=09=09=09=09=09=09=09=09=20=20=20= CStringGetDatum(stmt->drop_label));=0A-=09=09if=20(!labeloid)=0A-=09=09=09= ereport(ERROR,=0A-=09=09=09=09=09errcode(ERRCODE_UNDEFINED_OBJECT),=0A-=09= =09=09=09=09errmsg("property=20graph=20\"%s\"=20element=20\"%s\"=20has=20= no=20label=20\"%s\"",=0A-=09=09=09=09=09=09=20=20=20= get_rel_name(pgrelid),=20stmt->element_alias,=20stmt->drop_label),=0A-=09= =09=09=09=09parser_errposition(pstate,=20-1));=0A=20=0A-=09=09ellabeloid=20= =3D=20GetSysCacheOid2(PROPGRAPHELEMENTLABELELEMENTLABEL,=0A-=09=09=09=09=09= =09=09=09=09=20Anum_pg_propgraph_element_label_oid,=0A-=09=09=09=09=09=09= =09=09=09=20ObjectIdGetDatum(peoid),=0A-=09=09=09=09=09=09=09=09=09=20= ObjectIdGetDatum(labeloid));=0A+=09=09if=20(OidIsValid(labeloid))=0A+=09=09= =09ellabeloid=20=3D=20GetSysCacheOid2(PROPGRAPHELEMENTLABELELEMENTLABEL,=0A= +=09=09=09=09=09=09=09=09=09=09=20Anum_pg_propgraph_element_label_oid,=0A= +=09=09=09=09=09=09=09=09=09=09=20ObjectIdGetDatum(peoid),=0A+=09=09=09=09= =09=09=09=09=09=09=20ObjectIdGetDatum(labeloid));=0A=20=0A-=09=09if=20= (!ellabeloid)=0A+=09=09if=20(!OidIsValid(ellabeloid))=0A=20=09=09=09= ereport(ERROR,=0A=20=09=09=09=09=09errcode(ERRCODE_UNDEFINED_OBJECT),=0A=20= =09=09=09=09=09errmsg("property=20graph=20\"%s\"=20element=20\"%s\"=20= has=20no=20label=20\"%s\"",=0A@@=20-1538,7=20+1533,7=20@@=20= AlterPropGraph(ParseState=20*pstate,=20const=20AlterPropGraphStmt=20= *stmt)=0A=20=09=09Oid=09=09=09peoid;=0A=20=09=09Oid=09=09=09pgerelid;=0A=20= =09=09Oid=09=09=09labeloid;=0A-=09=09Oid=09=09=09ellabeloid;=0A+=09=09= Oid=09=09=09ellabeloid=20=3D=20InvalidOid;=0A=20=0A=20=09=09if=20= (stmt->element_kind=20=3D=3D=20PROPGRAPH_ELEMENT_KIND_VERTEX)=0A=20=09=09= =09peoid=20=3D=20get_vertex_oid(pstate,=20pgrelid,=20= stmt->element_alias,=20-1);=0A@@=20-1549,18=20+1544,14=20@@=20= AlterPropGraph(ParseState=20*pstate,=20const=20AlterPropGraphStmt=20= *stmt)=0A=20=09=09=09=09=09=09=09=09=20=20=20= Anum_pg_propgraph_label_oid,=0A=20=09=09=09=09=09=09=09=09=20=20=20= ObjectIdGetDatum(pgrelid),=0A=20=09=09=09=09=09=09=09=09=20=20=20= CStringGetDatum(stmt->alter_label));=0A-=09=09if=20(!labeloid)=0A-=09=09=09= ereport(ERROR,=0A-=09=09=09=09=09errcode(ERRCODE_UNDEFINED_OBJECT),=0A-=09= =09=09=09=09errmsg("property=20graph=20\"%s\"=20element=20\"%s\"=20has=20= no=20label=20\"%s\"",=0A-=09=09=09=09=09=09=20=20=20= get_rel_name(pgrelid),=20stmt->element_alias,=20stmt->alter_label),=0A-=09= =09=09=09=09parser_errposition(pstate,=20-1));=0A=20=0A-=09=09ellabeloid=20= =3D=20GetSysCacheOid2(PROPGRAPHELEMENTLABELELEMENTLABEL,=0A-=09=09=09=09=09= =09=09=09=09=20Anum_pg_propgraph_element_label_oid,=0A-=09=09=09=09=09=09= =09=09=09=20ObjectIdGetDatum(peoid),=0A-=09=09=09=09=09=09=09=09=09=20= ObjectIdGetDatum(labeloid));=0A-=09=09if=20(!ellabeloid)=0A+=09=09if=20= (OidIsValid(labeloid))=0A+=09=09=09ellabeloid=20=3D=20= GetSysCacheOid2(PROPGRAPHELEMENTLABELELEMENTLABEL,=0A+=09=09=09=09=09=09=09= =09=09=09=20Anum_pg_propgraph_element_label_oid,=0A+=09=09=09=09=09=09=09= =09=09=09=20ObjectIdGetDatum(peoid),=0A+=09=09=09=09=09=09=09=09=09=09=20= ObjectIdGetDatum(labeloid));=0A+=0A+=09=09if=20(!OidIsValid(ellabeloid))=0A= =20=09=09=09ereport(ERROR,=0A=20=09=09=09=09=09= errcode(ERRCODE_UNDEFINED_OBJECT),=0A=20=09=09=09=09=09errmsg("property=20= graph=20\"%s\"=20element=20\"%s\"=20has=20no=20label=20\"%s\"",=0A@@=20= -1580,7=20+1571,7=20@@=20AlterPropGraph(ParseState=20*pstate,=20const=20= AlterPropGraphStmt=20*stmt)=0A=20=09{=0A=20=09=09Oid=09=09=09peoid;=0A=20= =09=09Oid=09=09=09labeloid;=0A-=09=09Oid=09=09=09ellabeloid;=0A+=09=09= Oid=09=09=09ellabeloid=20=3D=20InvalidOid;=0A=20=09=09ObjectAddress=20= obj;=0A=20=0A=20=09=09if=20(stmt->element_kind=20=3D=3D=20= PROPGRAPH_ELEMENT_KIND_VERTEX)=0A@@=20-1592,19=20+1583,14=20@@=20= AlterPropGraph(ParseState=20*pstate,=20const=20AlterPropGraphStmt=20= *stmt)=0A=20=09=09=09=09=09=09=09=09=20=20=20= Anum_pg_propgraph_label_oid,=0A=20=09=09=09=09=09=09=09=09=20=20=20= ObjectIdGetDatum(pgrelid),=0A=20=09=09=09=09=09=09=09=09=20=20=20= CStringGetDatum(stmt->alter_label));=0A-=09=09if=20(!labeloid)=0A-=09=09=09= ereport(ERROR,=0A-=09=09=09=09=09errcode(ERRCODE_UNDEFINED_OBJECT),=0A-=09= =09=09=09=09errmsg("property=20graph=20\"%s\"=20element=20\"%s\"=20has=20= no=20label=20\"%s\"",=0A-=09=09=09=09=09=09=20=20=20= get_rel_name(pgrelid),=20stmt->element_alias,=20stmt->alter_label),=0A-=09= =09=09=09=09parser_errposition(pstate,=20-1));=0A=20=0A-=09=09ellabeloid=20= =3D=20GetSysCacheOid2(PROPGRAPHELEMENTLABELELEMENTLABEL,=0A-=09=09=09=09=09= =09=09=09=09=20Anum_pg_propgraph_element_label_oid,=0A-=09=09=09=09=09=09= =09=09=09=20ObjectIdGetDatum(peoid),=0A-=09=09=09=09=09=09=09=09=09=20= ObjectIdGetDatum(labeloid));=0A+=09=09if=20(OidIsValid(labeloid))=0A+=09=09= =09ellabeloid=20=3D=20GetSysCacheOid2(PROPGRAPHELEMENTLABELELEMENTLABEL,=0A= +=09=09=09=09=09=09=09=09=09=09=20Anum_pg_propgraph_element_label_oid,=0A= +=09=09=09=09=09=09=09=09=09=09=20ObjectIdGetDatum(peoid),=0A+=09=09=09=09= =09=09=09=09=09=09=20ObjectIdGetDatum(labeloid));=0A=20=0A-=09=09if=20= (!ellabeloid)=0A+=09=09if=20(!OidIsValid(ellabeloid))=0A=20=09=09=09= ereport(ERROR,=0A=20=09=09=09=09=09errcode(ERRCODE_UNDEFINED_OBJECT),=0A=20= =09=09=09=09=09errmsg("property=20graph=20\"%s\"=20element=20\"%s\"=20= has=20no=20label=20\"%s\"",=0A@@=20-1615,21=20+1601,26=20@@=20= AlterPropGraph(ParseState=20*pstate,=20const=20AlterPropGraphStmt=20= *stmt)=0A=20=09=09{=0A=20=09=09=09char=09=20=20=20*propname=20=3D=20= strVal(lfirst(lc));=0A=20=09=09=09Oid=09=09=09propoid;=0A-=09=09=09Oid=09= =09=09plpoid;=0A+=09=09=09Oid=09=09=09plpoid=20=3D=20InvalidOid;=0A=20=0A= =20=09=09=09propoid=20=3D=20GetSysCacheOid2(PROPGRAPHPROPNAME,=0A=20=09=09= =09=09=09=09=09=09=09=20=20Anum_pg_propgraph_property_oid,=0A=20=09=09=09= =09=09=09=09=09=09=20=20ObjectIdGetDatum(pgrelid),=0A=20=09=09=09=09=09=09= =09=09=09=20=20CStringGetDatum(propname));=0A-=09=09=09if=20(!propoid)=0A= +=0A+=09=09=09if=20(OidIsValid(propoid))=0A+=09=09=09=09plpoid=20=3D=20= GetSysCacheOid2(PROPGRAPHLABELPROP,=0A+=09=09=09=09=09=09=09=09=09=09=20= Anum_pg_propgraph_label_property_oid,=0A+=09=09=09=09=09=09=09=09=09=09=20= ObjectIdGetDatum(ellabeloid),=0A+=09=09=09=09=09=09=09=09=09=09=20= ObjectIdGetDatum(propoid));=0A+=0A+=09=09=09if=20(!OidIsValid(plpoid))=0A= =20=09=09=09=09ereport(ERROR,=0A=20=09=09=09=09=09=09= errcode(ERRCODE_UNDEFINED_OBJECT),=0A=20=09=09=09=09=09=09= errmsg("property=20graph=20\"%s\"=20element=20\"%s\"=20label=20\"%s\"=20= has=20no=20property=20\"%s\"",=0A=20=09=09=09=09=09=09=09=20=20=20= get_rel_name(pgrelid),=20stmt->element_alias,=20stmt->alter_label,=20= propname),=0A=20=09=09=09=09=09=09parser_errposition(pstate,=20-1));=0A=20= =0A-=09=09=09plpoid=20=3D=20GetSysCacheOid2(PROPGRAPHLABELPROP,=20= Anum_pg_propgraph_label_property_oid,=20ObjectIdGetDatum(ellabeloid),=20= ObjectIdGetDatum(propoid));=0A-=0A=20=09=09=09ObjectAddressSet(obj,=20= PropgraphLabelPropertyRelationId,=20plpoid);=0A=20=09=09=09= performDeletion(&obj,=20stmt->drop_behavior,=200);=0A=20=09=09}=0Adiff=20= --git=20a/src/test/regress/expected/create_property_graph.out=20= b/src/test/regress/expected/create_property_graph.out=0Aindex=20= bc9a596ec89..d8c1c061c62=20100644=0A---=20= a/src/test/regress/expected/create_property_graph.out=0A+++=20= b/src/test/regress/expected/create_property_graph.out=0A@@=20-82,6=20= +82,8=20@@=20CREATE=20PROPERTY=20GRAPH=20g4=0A=20=20=20=20=20);=0A=20= ALTER=20PROPERTY=20GRAPH=20g4=20ALTER=20VERTEX=20TABLE=20t2=20ALTER=20= LABEL=20t2=20ADD=20PROPERTIES=20(k=20*=202=20AS=20kk);=0A=20ALTER=20= PROPERTY=20GRAPH=20g4=20ALTER=20VERTEX=20TABLE=20t2=20ALTER=20LABEL=20t2=20= DROP=20PROPERTIES=20(k);=0A+ALTER=20PROPERTY=20GRAPH=20g4=20ALTER=20= VERTEX=20TABLE=20t2=20ALTER=20LABEL=20t2=20DROP=20PROPERTIES=20(yy);=20=20= --=20error=0A+ERROR:=20=20property=20graph=20"g4"=20element=20"t2"=20= label=20"t2"=20has=20no=20property=20"yy"=0A=20CREATE=20TABLE=20t11=20(a=20= int=20PRIMARY=20KEY);=0A=20CREATE=20TABLE=20t12=20(b=20int=20PRIMARY=20= KEY);=0A=20CREATE=20TABLE=20t13=20(=0Adiff=20--git=20= a/src/test/regress/sql/create_property_graph.sql=20= b/src/test/regress/sql/create_property_graph.sql=0Aindex=20= 241f93df302..8157f2b3c0a=20100644=0A---=20= a/src/test/regress/sql/create_property_graph.sql=0A+++=20= b/src/test/regress/sql/create_property_graph.sql=0A@@=20-75,6=20+75,7=20= @@=20CREATE=20PROPERTY=20GRAPH=20g4=0A=20=0A=20ALTER=20PROPERTY=20GRAPH=20= g4=20ALTER=20VERTEX=20TABLE=20t2=20ALTER=20LABEL=20t2=20ADD=20PROPERTIES=20= (k=20*=202=20AS=20kk);=0A=20ALTER=20PROPERTY=20GRAPH=20g4=20ALTER=20= VERTEX=20TABLE=20t2=20ALTER=20LABEL=20t2=20DROP=20PROPERTIES=20(k);=0A= +ALTER=20PROPERTY=20GRAPH=20g4=20ALTER=20VERTEX=20TABLE=20t2=20ALTER=20= LABEL=20t2=20DROP=20PROPERTIES=20(yy);=20=20--=20error=0A=20=0A=20CREATE=20= TABLE=20t11=20(a=20int=20PRIMARY=20KEY);=0A=20CREATE=20TABLE=20t12=20(b=20= int=20PRIMARY=20KEY);=0A--=20=0A2.50.1=20(Apple=20Git-155)=0A=0A= --Apple-Mail=_A6E72C2C-BD17-4954-9853-399FCB2F981C--