Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commite529e9f

Browse files
committed
[ Revert patch ]
> =================================================================> User interface proposal for multi-row function targetlist entries> =================================================================> 1. Only one targetlist entry may return a set.> 2. Each targetlist item (other than the set returning one) is> repeated for each item in the returned set.>Having gotten no objections (actually, no response at all), I can onlyassume no one had heartburn with this change. The attached patch coversthe first of the two proposals, i.e. restricting the target list to onlyone set returning function.Joe Conway
1 parent29e57ce commite529e9f

File tree

3 files changed

+8
-24
lines changed

3 files changed

+8
-24
lines changed

‎src/backend/parser/parse_clause.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
*
99
*
1010
* IDENTIFICATION
11-
* $Header: /cvsroot/pgsql/src/backend/parser/parse_clause.c,v 1.107 2003/02/13 05:06:34 momjian Exp $
11+
* $Header: /cvsroot/pgsql/src/backend/parser/parse_clause.c,v 1.108 2003/02/13 05:53:46 momjian Exp $
1212
*
1313
*-------------------------------------------------------------------------
1414
*/
@@ -1118,7 +1118,7 @@ findTargetlistEntry(ParseState *pstate, Node *node, List *tlist, int clause)
11181118
* the end of the target list.This target is given resjunk = TRUE so
11191119
* that it will not be projected into the final tuple.
11201120
*/
1121-
target_result=transformTargetEntry(pstate,node,expr,NULL, true,NULL);
1121+
target_result=transformTargetEntry(pstate,node,expr,NULL, true);
11221122
lappend(tlist,target_result);
11231123

11241124
returntarget_result;

‎src/backend/parser/parse_target.c

Lines changed: 4 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
*
99
*
1010
* IDENTIFICATION
11-
* $Header: /cvsroot/pgsql/src/backend/parser/parse_target.c,v 1.96 2003/02/13 05:06:35 momjian Exp $
11+
* $Header: /cvsroot/pgsql/src/backend/parser/parse_target.c,v 1.97 2003/02/13 05:53:46 momjian Exp $
1212
*
1313
*-------------------------------------------------------------------------
1414
*/
@@ -42,16 +42,13 @@ static intFigureColnameInternal(Node *node, char **name);
4242
* colnamethe column name to be assigned, or NULL if none yet set.
4343
* resjunktrue if the target should be marked resjunk, ie, it is not
4444
*wanted in the final projected tuple.
45-
* retsetif non-NULL, and the entry is a function expression, pass back
46-
*expr->funcretset
4745
*/
4846
TargetEntry*
4947
transformTargetEntry(ParseState*pstate,
5048
Node*node,
5149
Node*expr,
5250
char*colname,
53-
boolresjunk,
54-
bool*retset)
51+
boolresjunk)
5552
{
5653
Oidtype_id;
5754
int32type_mod;
@@ -64,9 +61,6 @@ transformTargetEntry(ParseState *pstate,
6461
if (IsA(expr,RangeVar))
6562
elog(ERROR,"You can't use relation names alone in the target list, try relation.*.");
6663

67-
if (retset&&IsA(expr,FuncExpr))
68-
*retset= ((FuncExpr*)expr)->funcretset;
69-
7064
type_id=exprType(expr);
7165
type_mod=exprTypmod(expr);
7266

@@ -99,12 +93,10 @@ transformTargetEntry(ParseState *pstate,
9993
List*
10094
transformTargetList(ParseState*pstate,List*targetlist)
10195
{
102-
boolretset= false;
10396
List*p_target=NIL;
10497

10598
while (targetlist!=NIL)
10699
{
107-
boolentry_retset= false;
108100
ResTarget*res= (ResTarget*)lfirst(targetlist);
109101

110102
if (IsA(res->val,ColumnRef))
@@ -181,8 +173,7 @@ transformTargetList(ParseState *pstate, List *targetlist)
181173
res->val,
182174
NULL,
183175
res->name,
184-
false,
185-
&entry_retset));
176+
false));
186177
}
187178
}
188179
elseif (IsA(res->val,InsertDefault))
@@ -203,16 +194,9 @@ transformTargetList(ParseState *pstate, List *targetlist)
203194
res->val,
204195
NULL,
205196
res->name,
206-
false,
207-
&entry_retset));
197+
false));
208198
}
209199

210-
if (retset&&entry_retset)
211-
elog(ERROR,"Only one target list entry may return a set result");
212-
213-
if (entry_retset)
214-
retset= true;
215-
216200
targetlist=lnext(targetlist);
217201
}
218202

‎src/include/parser/parse_target.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
* Portions Copyright (c) 1996-2002, PostgreSQL Global Development Group
88
* Portions Copyright (c) 1994, Regents of the University of California
99
*
10-
* $Id: parse_target.h,v 1.28 2003/02/13 05:06:35 momjian Exp $
10+
* $Id: parse_target.h,v 1.29 2003/02/13 05:53:46 momjian Exp $
1111
*
1212
*-------------------------------------------------------------------------
1313
*/
@@ -20,7 +20,7 @@
2020
externList*transformTargetList(ParseState*pstate,List*targetlist);
2121
externTargetEntry*transformTargetEntry(ParseState*pstate,
2222
Node*node,Node*expr,
23-
char*colname,boolresjunk,bool*retset);
23+
char*colname,boolresjunk);
2424
externvoidupdateTargetListEntry(ParseState*pstate,TargetEntry*tle,
2525
char*colname,intattrno,
2626
List*indirection);

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp