7
7
*
8
8
*
9
9
* IDENTIFICATION
10
- * $Header: /cvsroot/pgsql/src/backend/nodes/copyfuncs.c,v 1.90 1999/08/09 06:20:23 momjian Exp $
10
+ * $Header: /cvsroot/pgsql/src/backend/nodes/copyfuncs.c,v 1.91 1999/08/16 02:17:41 tgl Exp $
11
11
*
12
12
*-------------------------------------------------------------------------
13
13
*/
@@ -1030,10 +1030,6 @@ _copyRelOptInfo(RelOptInfo *from)
1030
1030
newnode -> indexkeys [len ] = 0 ;
1031
1031
}
1032
1032
1033
- newnode -> relam = from -> relam ;
1034
- newnode -> indproc = from -> indproc ;
1035
- Node_Copy (from , newnode , indpred );
1036
-
1037
1033
if (from -> ordering )
1038
1034
{
1039
1035
for (len = 0 ; from -> ordering [len ] != 0 ; len ++ )
@@ -1044,6 +1040,10 @@ _copyRelOptInfo(RelOptInfo *from)
1044
1040
newnode -> ordering [len ] = 0 ;
1045
1041
}
1046
1042
1043
+ newnode -> relam = from -> relam ;
1044
+ newnode -> indproc = from -> indproc ;
1045
+ Node_Copy (from , newnode , indpred );
1046
+
1047
1047
Node_Copy (from , newnode , restrictinfo );
1048
1048
Node_Copy (from , newnode , joininfo );
1049
1049
Node_Copy (from , newnode , innerjoin );
@@ -1061,8 +1061,6 @@ _copyRelOptInfo(RelOptInfo *from)
1061
1061
static void
1062
1062
CopyPathFields (Path * from , Path * newnode )
1063
1063
{
1064
- newnode -> pathtype = from -> pathtype ;
1065
-
1066
1064
/*
1067
1065
* Modify the next line, since it causes the copying to cycle (i.e.
1068
1066
* the parent points right back here! -- JMH, 7/7/92. Old version:
@@ -1072,32 +1070,9 @@ CopyPathFields(Path *from, Path *newnode)
1072
1070
1073
1071
newnode -> path_cost = from -> path_cost ;
1074
1072
1075
- newnode -> pathorder = makeNode (PathOrder );
1076
- newnode -> pathorder -> ordtype = from -> pathorder -> ordtype ;
1077
- if (from -> pathorder -> ordtype == SORTOP_ORDER )
1078
- {
1079
- int len ,
1080
- i ;
1081
- Oid * ordering = from -> pathorder -> ord .sortop ;
1082
-
1083
- if (ordering )
1084
- {
1085
- for (len = 0 ; ordering [len ] != 0 ; len ++ )
1086
- ;
1087
- newnode -> pathorder -> ord .sortop = (Oid * ) palloc (sizeof (Oid ) * (len + 1 ));
1088
- for (i = 0 ; i < len ; i ++ )
1089
- newnode -> pathorder -> ord .sortop [i ] = ordering [i ];
1090
- newnode -> pathorder -> ord .sortop [len ] = 0 ;
1091
- }
1092
- }
1093
- else
1094
- Node_Copy (from , newnode , pathorder -> ord .merge );
1073
+ newnode -> pathtype = from -> pathtype ;
1095
1074
1096
1075
Node_Copy (from , newnode , pathkeys );
1097
-
1098
- newnode -> outerjoincost = from -> outerjoincost ;
1099
-
1100
- newnode -> joinid = listCopy (from -> joinid );
1101
1076
}
1102
1077
1103
1078
/* ----------------
@@ -1135,32 +1110,20 @@ _copyIndexPath(IndexPath *from)
1135
1110
*/
1136
1111
newnode -> indexid = listCopy (from -> indexid );
1137
1112
Node_Copy (from , newnode , indexqual );
1138
-
1139
- if (from -> indexkeys )
1140
- {
1141
- int i ,
1142
- len ;
1143
-
1144
- for (len = 0 ; from -> indexkeys [len ] != 0 ; len ++ )
1145
- ;
1146
- newnode -> indexkeys = (int * ) palloc (sizeof (int ) * (len + 1 ));
1147
- for (i = 0 ; i < len ; i ++ )
1148
- newnode -> indexkeys [i ] = from -> indexkeys [i ];
1149
- newnode -> indexkeys [len ] = 0 ;
1150
- }
1113
+ newnode -> joinrelids = listCopy (from -> joinrelids );
1151
1114
1152
1115
return newnode ;
1153
1116
}
1154
1117
1155
1118
/* ----------------
1156
- * CopyNestPathFields
1119
+ * CopyJoinPathFields
1157
1120
*
1158
- * This function copies the fields of the NestPath node. It is used by
1159
- * all the copy functions for classes which inherit from NestPath .
1121
+ * This function copies the fields of the JoinPath node. It is used by
1122
+ * all the copy functions for classes which inherit from JoinPath .
1160
1123
* ----------------
1161
1124
*/
1162
1125
static void
1163
- CopyNestPathFields ( NestPath * from , NestPath * newnode )
1126
+ CopyJoinPathFields ( JoinPath * from , JoinPath * newnode )
1164
1127
{
1165
1128
Node_Copy (from , newnode , pathinfo );
1166
1129
Node_Copy (from , newnode , outerjoinpath );
@@ -1181,7 +1144,7 @@ _copyNestPath(NestPath *from)
1181
1144
* ----------------
1182
1145
*/
1183
1146
CopyPathFields ((Path * ) from , (Path * ) newnode );
1184
- CopyNestPathFields ( from , newnode );
1147
+ CopyJoinPathFields (( JoinPath * ) from , ( JoinPath * ) newnode );
1185
1148
1186
1149
return newnode ;
1187
1150
}
@@ -1200,7 +1163,7 @@ _copyMergePath(MergePath *from)
1200
1163
* ----------------
1201
1164
*/
1202
1165
CopyPathFields ((Path * ) from , (Path * ) newnode );
1203
- CopyNestPathFields (( NestPath * ) from , (NestPath * ) newnode );
1166
+ CopyJoinPathFields (( JoinPath * ) from , (JoinPath * ) newnode );
1204
1167
1205
1168
/* ----------------
1206
1169
* copy the remainder of the node
@@ -1227,76 +1190,32 @@ _copyHashPath(HashPath *from)
1227
1190
* ----------------
1228
1191
*/
1229
1192
CopyPathFields ((Path * ) from , (Path * ) newnode );
1230
- CopyNestPathFields (( NestPath * ) from , (NestPath * ) newnode );
1193
+ CopyJoinPathFields (( JoinPath * ) from , (JoinPath * ) newnode );
1231
1194
1232
1195
/* ----------------
1233
1196
* copy remainder of node
1234
1197
* ----------------
1235
1198
*/
1236
1199
Node_Copy (from , newnode , path_hashclauses );
1237
- Node_Copy (from , newnode , outerhashkeys );
1238
- Node_Copy (from , newnode , innerhashkeys );
1239
1200
1240
1201
return newnode ;
1241
1202
}
1242
1203
1243
1204
/* ----------------
1244
- * _copyOrderKey
1205
+ * _copyPathKeyItem
1245
1206
* ----------------
1246
1207
*/
1247
- static OrderKey *
1248
- _copyOrderKey ( OrderKey * from )
1208
+ static PathKeyItem *
1209
+ _copyPathKeyItem ( PathKeyItem * from )
1249
1210
{
1250
- OrderKey * newnode = makeNode (OrderKey );
1211
+ PathKeyItem * newnode = makeNode (PathKeyItem );
1251
1212
1252
1213
/* ----------------
1253
1214
* copy remainder of node
1254
1215
* ----------------
1255
1216
*/
1256
- newnode -> attribute_number = from -> attribute_number ;
1257
- newnode -> array_index = from -> array_index ;
1258
-
1259
- return newnode ;
1260
- }
1261
-
1262
-
1263
- /* ----------------
1264
- * _copyJoinKey
1265
- * ----------------
1266
- */
1267
- static JoinKey *
1268
- _copyJoinKey (JoinKey * from )
1269
- {
1270
- JoinKey * newnode = makeNode (JoinKey );
1271
-
1272
- /* ----------------
1273
- * copy remainder of node
1274
- * ----------------
1275
- */
1276
- Node_Copy (from , newnode , outer );
1277
- Node_Copy (from , newnode , inner );
1278
-
1279
- return newnode ;
1280
- }
1281
-
1282
- /* ----------------
1283
- * _copyMergeOrder
1284
- * ----------------
1285
- */
1286
- static MergeOrder *
1287
- _copyMergeOrder (MergeOrder * from )
1288
- {
1289
- MergeOrder * newnode = makeNode (MergeOrder );
1290
-
1291
- /* ----------------
1292
- * copy remainder of node
1293
- * ----------------
1294
- */
1295
- newnode -> join_operator = from -> join_operator ;
1296
- newnode -> left_operator = from -> left_operator ;
1297
- newnode -> right_operator = from -> right_operator ;
1298
- newnode -> left_type = from -> left_type ;
1299
- newnode -> right_type = from -> right_type ;
1217
+ Node_Copy (from , newnode , key );
1218
+ newnode -> sortop = from -> sortop ;
1300
1219
1301
1220
return newnode ;
1302
1221
}
@@ -1315,83 +1234,16 @@ _copyRestrictInfo(RestrictInfo *from)
1315
1234
* ----------------
1316
1235
*/
1317
1236
Node_Copy (from , newnode , clause );
1318
-
1319
1237
newnode -> selectivity = from -> selectivity ;
1320
-
1321
- Node_Copy (from , newnode , indexids );
1322
- Node_Copy (from , newnode , mergejoinorder );
1238
+ Node_Copy (from , newnode , subclauseindices );
1239
+ newnode -> mergejoinoperator = from -> mergejoinoperator ;
1240
+ newnode -> left_sortop = from -> left_sortop ;
1241
+ newnode -> right_sortop = from -> right_sortop ;
1323
1242
newnode -> hashjoinoperator = from -> hashjoinoperator ;
1324
1243
1325
1244
return newnode ;
1326
1245
}
1327
1246
1328
- /* ----------------
1329
- * CopyJoinMethodFields
1330
- *
1331
- * This function copies the fields of the JoinMethod node. It is used by
1332
- * all the copy functions for classes which inherit from JoinMethod.
1333
- * ----------------
1334
- */
1335
- static void
1336
- CopyJoinMethodFields (JoinMethod * from , JoinMethod * newnode )
1337
- {
1338
- Node_Copy (from , newnode , jmkeys );
1339
- Node_Copy (from , newnode , clauses );
1340
- return ;
1341
- }
1342
-
1343
- /* ----------------
1344
- * _copyJoinMethod
1345
- * ----------------
1346
- */
1347
- static JoinMethod *
1348
- _copyJoinMethod (JoinMethod * from )
1349
- {
1350
- JoinMethod * newnode = makeNode (JoinMethod );
1351
-
1352
- CopyJoinMethodFields (from , newnode );
1353
-
1354
- return newnode ;
1355
- }
1356
-
1357
- /* ----------------
1358
- * _copyHashInfo
1359
- * ----------------
1360
- */
1361
- static HashInfo *
1362
- _copyHashInfo (HashInfo * from )
1363
- {
1364
- HashInfo * newnode = makeNode (HashInfo );
1365
-
1366
- /* ----------------
1367
- * copy remainder of node
1368
- * ----------------
1369
- */
1370
- CopyJoinMethodFields ((JoinMethod * ) from , (JoinMethod * ) newnode );
1371
- newnode -> hashop = from -> hashop ;
1372
-
1373
- return newnode ;
1374
- }
1375
-
1376
- /* ----------------
1377
- * _copyMergeInfo
1378
- * ----------------
1379
- */
1380
- static MergeInfo *
1381
- _copyMergeInfo (MergeInfo * from )
1382
- {
1383
- MergeInfo * newnode = makeNode (MergeInfo );
1384
-
1385
- /* ----------------
1386
- * copy remainder of node
1387
- * ----------------
1388
- */
1389
- CopyJoinMethodFields ((JoinMethod * ) from , (JoinMethod * ) newnode );
1390
- Node_Copy (from , newnode , m_ordering );
1391
-
1392
- return newnode ;
1393
- }
1394
-
1395
1247
/* ----------------
1396
1248
* _copyJoinInfo
1397
1249
* ----------------
@@ -1408,9 +1260,6 @@ _copyJoinInfo(JoinInfo *from)
1408
1260
newnode -> unjoined_relids = listCopy (from -> unjoined_relids );
1409
1261
Node_Copy (from , newnode , jinfo_restrictinfo );
1410
1262
1411
- newnode -> mergejoinable = from -> mergejoinable ;
1412
- newnode -> hashjoinable = from -> hashjoinable ;
1413
-
1414
1263
return newnode ;
1415
1264
}
1416
1265
@@ -1756,27 +1605,12 @@ copyObject(void *from)
1756
1605
case T_HashPath :
1757
1606
retval = _copyHashPath (from );
1758
1607
break ;
1759
- case T_OrderKey :
1760
- retval = _copyOrderKey (from );
1761
- break ;
1762
- case T_JoinKey :
1763
- retval = _copyJoinKey (from );
1764
- break ;
1765
- case T_MergeOrder :
1766
- retval = _copyMergeOrder (from );
1608
+ case T_PathKeyItem :
1609
+ retval = _copyPathKeyItem (from );
1767
1610
break ;
1768
1611
case T_RestrictInfo :
1769
1612
retval = _copyRestrictInfo (from );
1770
1613
break ;
1771
- case T_JoinMethod :
1772
- retval = _copyJoinMethod (from );
1773
- break ;
1774
- case T_HashInfo :
1775
- retval = _copyHashInfo (from );
1776
- break ;
1777
- case T_MergeInfo :
1778
- retval = _copyMergeInfo (from );
1779
- break ;
1780
1614
case T_JoinInfo :
1781
1615
retval = _copyJoinInfo (from );
1782
1616
break ;
0 commit comments