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

Commit1316113

Browse files
committed
Fix problem with nodes handling.
1 parent3d24e75 commit1316113

File tree

5 files changed

+29
-26
lines changed

5 files changed

+29
-26
lines changed

‎src/backend/nodes/copyfuncs.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
*
88
*
99
* IDENTIFICATION
10-
* $Header: /cvsroot/pgsql/src/backend/nodes/copyfuncs.c,v 1.32 1998/01/17 04:53:07 momjian Exp $
10+
* $Header: /cvsroot/pgsql/src/backend/nodes/copyfuncs.c,v 1.33 1998/01/19 18:10:48 momjian Exp $
1111
*
1212
*-------------------------------------------------------------------------
1313
*/
@@ -908,7 +908,7 @@ _copySubLink(SubLink *from)
908908
newnode->subLinkType=from->subLinkType;
909909
newnode->useor=from->useor;
910910
Node_Copy(from,newnode,lefthand);
911-
Node_Copy(from,newnode,oper);
911+
newnode->oper=listCopy(from->oper);
912912
Node_Copy(from,newnode,subselect);
913913

914914
returnnewnode;

‎src/backend/nodes/outfuncs.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
*
88
*
99
* IDENTIFICATION
10-
* $Header: /cvsroot/pgsql/src/backend/nodes/outfuncs.c,v 1.23 1998/01/17 04:53:09 momjian Exp $
10+
* $Header: /cvsroot/pgsql/src/backend/nodes/outfuncs.c,v 1.24 1998/01/19 18:10:50 momjian Exp $
1111
*
1212
* NOTES
1313
* Every (plan) node in POSTGRES has an associated "out" routine which
@@ -771,7 +771,7 @@ _outSubLink(StringInfo str, SubLink *node)
771771
appendStringInfo(str," :lefthand ");
772772
_outNode(str,node->lefthand);
773773
appendStringInfo(str," :oper ");
774-
_outNode(str,node->oper);
774+
_outIntList(str,node->oper);
775775
appendStringInfo(str," :subselect ");
776776
_outNode(str,node->subselect);
777777
}

‎src/backend/nodes/readfuncs.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
*
88
*
99
* IDENTIFICATION
10-
* $Header: /cvsroot/pgsql/src/backend/nodes/readfuncs.c,v 1.19 1998/01/17 04:53:11 momjian Exp $
10+
* $Header: /cvsroot/pgsql/src/backend/nodes/readfuncs.c,v 1.20 1998/01/19 18:10:52 momjian Exp $
1111
*
1212
* NOTES
1313
* Most of the read functions for plan nodes are tested. (In fact, they
@@ -1182,7 +1182,7 @@ _readSubLink()
11821182
local_node->lefthand=nodeRead(true);/* now read it */
11831183

11841184
token=lsptok(NULL,&length);/* eat :oper */
1185-
local_node->oper=nodeRead(true);/* now read it */
1185+
local_node->oper=toIntList(nodeRead(true));/* now read it */
11861186

11871187
token=lsptok(NULL,&length);/* eat :subselect */
11881188
local_node->subselect=nodeRead(true);/* now read it */

‎src/backend/parser/parse_expr.c

Lines changed: 22 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
*
88
*
99
* IDENTIFICATION
10-
* $Header: /cvsroot/pgsql/src/backend/parser/parse_expr.c,v 1.9 1998/01/1905:48:36 momjian Exp $
10+
* $Header: /cvsroot/pgsql/src/backend/parser/parse_expr.c,v 1.10 1998/01/1918:10:56 momjian Exp $
1111
*
1212
*-------------------------------------------------------------------------
1313
*/
@@ -255,12 +255,14 @@ transformExpr(ParseState *pstate, Node *expr, int precedence)
255255
SubLink*sublink= (SubLink*)expr;
256256
QueryTreeList*qtree;
257257
Query*subselect;
258-
259-
qtree=parse_analyze(lcons(sublink->subselect,NIL),pstate);
258+
List*llist;
260259

260+
qtree=parse_analyze(lcons(sublink->subselect,NIL),pstate);
261261
Assert(qtree->len==1);
262-
263262
sublink->subselect= (Node*)subselect=qtree->qtrees[0];
263+
264+
foreach(llist,sublink->lefthand)
265+
lfirst(llist)=transformExpr(pstate,lfirst(llist),precedence);
264266

265267
if (length(sublink->lefthand)!=
266268
length(subselect->targetList))
@@ -270,20 +272,22 @@ transformExpr(ParseState *pstate, Node *expr, int precedence)
270272
{
271273
char*op=lfirst(sublink->oper);
272274
List*left_expr=sublink->lefthand;
273-
List*right_expr=subselect->targetList;
274-
List*elist;
275-
276-
foreach(elist,left_expr)
277-
{
278-
Node*lexpr=transformExpr(pstate,lfirst(elist),precedence);
279-
Node*rexpr=lfirst(right_expr);
280-
TargetEntry*tent= (TargetEntry*)rexpr;
281-
Expr*op_expr;
282-
283-
op_expr=make_op(op,lexpr,tent->expr);
284-
sublink->oper=lappend(sublink->oper,op_expr->oper);
285-
right_expr=lnext(right_expr);
286-
}
275+
List*right_expr=subselect->targetList;
276+
List*elist;
277+
278+
sublink->oper=NIL;
279+
foreach(elist,left_expr)
280+
{
281+
Node*lexpr=lfirst(elist);
282+
Node*rexpr=lfirst(right_expr);
283+
TargetEntry*tent= (TargetEntry*)rexpr;
284+
Expr*op_expr;
285+
286+
op_expr=make_op(op,lexpr,tent->expr);
287+
sublink->oper=lappendi(sublink->oper,
288+
((Oper*)op_expr->oper)->opno);
289+
right_expr=lnext(right_expr);
290+
}
287291
result= (Node*)expr;
288292
}
289293
break;

‎src/include/nodes/primnodes.h

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
*
77
* Copyright (c) 1994, Regents of the University of California
88
*
9-
* $Id: primnodes.h,v 1.14 1998/01/1905:06:36 momjian Exp $
9+
* $Id: primnodes.h,v 1.15 1998/01/1918:11:10 momjian Exp $
1010
*
1111
*-------------------------------------------------------------------------
1212
*/
@@ -287,7 +287,6 @@ typedef enum SubLinkType
287287

288288
typedefstructSubLink
289289
{
290-
structQuery;
291290
NodeTagtype;
292291
SubLinkTypesubLinkType;
293292
booluseor;

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp