|
15 | 15 | * Portions Copyright (c) 1994, Regents of the University of California
|
16 | 16 | *
|
17 | 17 | * IDENTIFICATION
|
18 |
| - * $Header: /cvsroot/pgsql/src/backend/nodes/copyfuncs.c,v 1.220 2002/11/23 03:59:07 momjian Exp $ |
| 18 | + * $Header: /cvsroot/pgsql/src/backend/nodes/copyfuncs.c,v 1.221 2002/11/24 21:52:13 tgl Exp $ |
19 | 19 | *
|
20 | 20 | *-------------------------------------------------------------------------
|
21 | 21 | */
|
@@ -1148,7 +1148,9 @@ _copyRelOptInfo(RelOptInfo *from)
|
1148 | 1148 | newnode->baserestrictcost = from->baserestrictcost;
|
1149 | 1149 | newnode->outerjoinset = listCopy(from->outerjoinset);
|
1150 | 1150 | Node_Copy(from, newnode, joininfo);
|
1151 |
| - Node_Copy(from, newnode, innerjoin); |
| 1151 | + |
| 1152 | + newnode->index_outer_relids = listCopy(from->index_outer_relids); |
| 1153 | + Node_Copy(from, newnode, index_inner_paths); |
1152 | 1154 |
|
1153 | 1155 | return newnode;
|
1154 | 1156 | }
|
@@ -1200,6 +1202,9 @@ _copyIndexOptInfo(IndexOptInfo *from)
|
1200 | 1202 | Node_Copy(from, newnode, indpred);
|
1201 | 1203 | newnode->unique = from->unique;
|
1202 | 1204 |
|
| 1205 | + newnode->outer_relids = listCopy(from->outer_relids); |
| 1206 | + Node_Copy(from, newnode, inner_paths); |
| 1207 | + |
1203 | 1208 | return newnode;
|
1204 | 1209 | }
|
1205 | 1210 |
|
@@ -1262,8 +1267,6 @@ _copyIndexPath(IndexPath *from)
|
1262 | 1267 | Node_Copy(from, newnode, indexinfo);
|
1263 | 1268 | Node_Copy(from, newnode, indexqual);
|
1264 | 1269 | newnode->indexscandir = from->indexscandir;
|
1265 |
| - newnode->joinrelids = listCopy(from->joinrelids); |
1266 |
| - newnode->alljoinquals = from->alljoinquals; |
1267 | 1270 | newnode->rows = from->rows;
|
1268 | 1271 |
|
1269 | 1272 | return newnode;
|
@@ -1491,6 +1494,25 @@ _copyJoinInfo(JoinInfo *from)
|
1491 | 1494 | return newnode;
|
1492 | 1495 | }
|
1493 | 1496 |
|
| 1497 | +/* ---------------- |
| 1498 | + * _copyInnerIndexscanInfo |
| 1499 | + * ---------------- |
| 1500 | + */ |
| 1501 | +static InnerIndexscanInfo * |
| 1502 | +_copyInnerIndexscanInfo(InnerIndexscanInfo *from) |
| 1503 | +{ |
| 1504 | + InnerIndexscanInfo *newnode = makeNode(InnerIndexscanInfo); |
| 1505 | + |
| 1506 | + /* |
| 1507 | + * copy remainder of node |
| 1508 | + */ |
| 1509 | + newnode->other_relids = listCopy(from->other_relids); |
| 1510 | + newnode->isouterjoin = from->isouterjoin; |
| 1511 | + Node_Copy(from, newnode, best_innerpath); |
| 1512 | + |
| 1513 | + return newnode; |
| 1514 | +} |
| 1515 | + |
1494 | 1516 | /* ****************************************************************
|
1495 | 1517 | * parsenodes.h copy functions
|
1496 | 1518 | * ****************************************************************
|
@@ -2952,6 +2974,9 @@ copyObject(void *from)
|
2952 | 2974 | case T_IndexOptInfo:
|
2953 | 2975 | retval = _copyIndexOptInfo(from);
|
2954 | 2976 | break;
|
| 2977 | + case T_InnerIndexscanInfo: |
| 2978 | + retval = _copyInnerIndexscanInfo(from); |
| 2979 | + break; |
2955 | 2980 |
|
2956 | 2981 | /*
|
2957 | 2982 | * VALUE NODES
|
|
0 commit comments