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

+3-3
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

+12-12
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

+7-7
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

+5-5
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)