Skip to content

Commit 550214a

Browse files
committed
Add operator_with_argtypes grammar rule
This makes the handling of operators similar to that of functions and aggregates. Rename node FuncWithArgs to ObjectWithArgs, to reflect the expanded use. Reviewed-by: Jim Nasby <Jim.Nasby@BlueTreble.com> Reviewed-by: Michael Paquier <michael.paquier@gmail.com>
1 parent 63ebd37 commit 550214a

File tree

8 files changed

+126
-116
lines changed

8 files changed

+126
-116
lines changed

src/backend/catalog/aclchk.c

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -667,11 +667,11 @@ objectNamesToOids(GrantObjectType objtype, List *objnames)
667667
case ACL_OBJECT_FUNCTION:
668668
foreach(cell, objnames)
669669
{
670-
FuncWithArgs *func = (FuncWithArgs *) lfirst(cell);
670+
ObjectWithArgs *func = (ObjectWithArgs *) lfirst(cell);
671671
Oid funcid;
672672

673-
funcid = LookupFuncNameTypeNames(func->funcname,
674-
func->funcargs, false);
673+
funcid = LookupFuncNameTypeNames(func->objname,
674+
func->objargs, false);
675675
objects = lappend_oid(objects, funcid);
676676
}
677677
break;

src/backend/commands/functioncmds.c

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1181,8 +1181,8 @@ AlterFunction(ParseState *pstate, AlterFunctionStmt *stmt)
11811181

11821182
rel = heap_open(ProcedureRelationId, RowExclusiveLock);
11831183

1184-
funcOid = LookupFuncNameTypeNames(stmt->func->funcname,
1185-
stmt->func->funcargs,
1184+
funcOid = LookupFuncNameTypeNames(stmt->func->objname,
1185+
stmt->func->objargs,
11861186
false);
11871187

11881188
tup = SearchSysCacheCopy1(PROCOID, ObjectIdGetDatum(funcOid));
@@ -1194,13 +1194,13 @@ AlterFunction(ParseState *pstate, AlterFunctionStmt *stmt)
11941194
/* Permission check: must own function */
11951195
if (!pg_proc_ownercheck(funcOid, GetUserId()))
11961196
aclcheck_error(ACLCHECK_NOT_OWNER, ACL_KIND_PROC,
1197-
NameListToString(stmt->func->funcname));
1197+
NameListToString(stmt->func->objname));
11981198

11991199
if (procForm->proisagg)
12001200
ereport(ERROR,
12011201
(errcode(ERRCODE_WRONG_OBJECT_TYPE),
12021202
errmsg("\"%s\" is an aggregate function",
1203-
NameListToString(stmt->func->funcname))));
1203+
NameListToString(stmt->func->objname))));
12041204

12051205
/* Examine requested actions. */
12061206
foreach(l, stmt->actions)
@@ -1453,8 +1453,8 @@ CreateCast(CreateCastStmt *stmt)
14531453
{
14541454
Form_pg_proc procstruct;
14551455

1456-
funcid = LookupFuncNameTypeNames(stmt->func->funcname,
1457-
stmt->func->funcargs,
1456+
funcid = LookupFuncNameTypeNames(stmt->func->objname,
1457+
stmt->func->objargs,
14581458
false);
14591459

14601460
tuple = SearchSysCache1(PROCOID, ObjectIdGetDatum(funcid));
@@ -1836,14 +1836,14 @@ CreateTransform(CreateTransformStmt *stmt)
18361836
*/
18371837
if (stmt->fromsql)
18381838
{
1839-
fromsqlfuncid = LookupFuncNameTypeNames(stmt->fromsql->funcname, stmt->fromsql->funcargs, false);
1839+
fromsqlfuncid = LookupFuncNameTypeNames(stmt->fromsql->objname, stmt->fromsql->objargs, false);
18401840

18411841
if (!pg_proc_ownercheck(fromsqlfuncid, GetUserId()))
1842-
aclcheck_error(ACLCHECK_NOT_OWNER, ACL_KIND_PROC, NameListToString(stmt->fromsql->funcname));
1842+
aclcheck_error(ACLCHECK_NOT_OWNER, ACL_KIND_PROC, NameListToString(stmt->fromsql->objname));
18431843

18441844
aclresult = pg_proc_aclcheck(fromsqlfuncid, GetUserId(), ACL_EXECUTE);
18451845
if (aclresult != ACLCHECK_OK)
1846-
aclcheck_error(aclresult, ACL_KIND_PROC, NameListToString(stmt->fromsql->funcname));
1846+
aclcheck_error(aclresult, ACL_KIND_PROC, NameListToString(stmt->fromsql->objname));
18471847

18481848
tuple = SearchSysCache1(PROCOID, ObjectIdGetDatum(fromsqlfuncid));
18491849
if (!HeapTupleIsValid(tuple))
@@ -1862,14 +1862,14 @@ CreateTransform(CreateTransformStmt *stmt)
18621862

18631863
if (stmt->tosql)
18641864
{
1865-
tosqlfuncid = LookupFuncNameTypeNames(stmt->tosql->funcname, stmt->tosql->funcargs, false);
1865+
tosqlfuncid = LookupFuncNameTypeNames(stmt->tosql->objname, stmt->tosql->objargs, false);
18661866

18671867
if (!pg_proc_ownercheck(tosqlfuncid, GetUserId()))
1868-
aclcheck_error(ACLCHECK_NOT_OWNER, ACL_KIND_PROC, NameListToString(stmt->tosql->funcname));
1868+
aclcheck_error(ACLCHECK_NOT_OWNER, ACL_KIND_PROC, NameListToString(stmt->tosql->objname));
18691869

18701870
aclresult = pg_proc_aclcheck(tosqlfuncid, GetUserId(), ACL_EXECUTE);
18711871
if (aclresult != ACLCHECK_OK)
1872-
aclcheck_error(aclresult, ACL_KIND_PROC, NameListToString(stmt->tosql->funcname));
1872+
aclcheck_error(aclresult, ACL_KIND_PROC, NameListToString(stmt->tosql->objname));
18731873

18741874
tuple = SearchSysCache1(PROCOID, ObjectIdGetDatum(tosqlfuncid));
18751875
if (!HeapTupleIsValid(tuple))

src/backend/nodes/copyfuncs.c

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -2954,13 +2954,13 @@ _copyGrantStmt(const GrantStmt *from)
29542954
return newnode;
29552955
}
29562956

2957-
static FuncWithArgs *
2958-
_copyFuncWithArgs(const FuncWithArgs *from)
2957+
static ObjectWithArgs *
2958+
_copyObjectWithArgs(const ObjectWithArgs *from)
29592959
{
2960-
FuncWithArgs *newnode = makeNode(FuncWithArgs);
2960+
ObjectWithArgs *newnode = makeNode(ObjectWithArgs);
29612961

2962-
COPY_NODE_FIELD(funcname);
2963-
COPY_NODE_FIELD(funcargs);
2962+
COPY_NODE_FIELD(objname);
2963+
COPY_NODE_FIELD(objargs);
29642964

29652965
return newnode;
29662966
}
@@ -5274,8 +5274,8 @@ copyObject(const void *from)
52745274
case T_CommonTableExpr:
52755275
retval = _copyCommonTableExpr(from);
52765276
break;
5277-
case T_FuncWithArgs:
5278-
retval = _copyFuncWithArgs(from);
5277+
case T_ObjectWithArgs:
5278+
retval = _copyObjectWithArgs(from);
52795279
break;
52805280
case T_AccessPriv:
52815281
retval = _copyAccessPriv(from);

src/backend/nodes/equalfuncs.c

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1095,10 +1095,10 @@ _equalGrantStmt(const GrantStmt *a, const GrantStmt *b)
10951095
}
10961096

10971097
static bool
1098-
_equalFuncWithArgs(const FuncWithArgs *a, const FuncWithArgs *b)
1098+
_equalObjectWithArgs(const ObjectWithArgs *a, const ObjectWithArgs *b)
10991099
{
1100-
COMPARE_NODE_FIELD(funcname);
1101-
COMPARE_NODE_FIELD(funcargs);
1100+
COMPARE_NODE_FIELD(objname);
1101+
COMPARE_NODE_FIELD(objargs);
11021102

11031103
return true;
11041104
}
@@ -3532,8 +3532,8 @@ equal(const void *a, const void *b)
35323532
case T_CommonTableExpr:
35333533
retval = _equalCommonTableExpr(a, b);
35343534
break;
3535-
case T_FuncWithArgs:
3536-
retval = _equalFuncWithArgs(a, b);
3535+
case T_ObjectWithArgs:
3536+
retval = _equalObjectWithArgs(a, b);
35373537
break;
35383538
case T_AccessPriv:
35393539
retval = _equalAccessPriv(a, b);

0 commit comments

Comments
 (0)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy