7
7
*
8
8
*
9
9
* IDENTIFICATION
10
- * $Header: /cvsroot/pgsql/src/backend/nodes/copyfuncs.c,v 1.28 1998/01/09 05:48:10 momjian Exp $
10
+ * $Header: /cvsroot/pgsql/src/backend/nodes/copyfuncs.c,v 1.29 1998/01/11 20:01:53 momjian Exp $
11
11
*
12
12
*-------------------------------------------------------------------------
13
13
*/
@@ -82,6 +82,7 @@ CopyPlanFields(Plan *from, Plan *newnode)
82
82
newnode -> cost = from -> cost ;
83
83
newnode -> plan_size = from -> plan_size ;
84
84
newnode -> plan_width = from -> plan_width ;
85
+ newnode -> plan_tupperpage = from -> plan_tupperpage ;
85
86
newnode -> state = from -> state ;
86
87
newnode -> targetlist = copyObject (from -> targetlist );
87
88
newnode -> qual = copyObject (from -> qual );
@@ -153,6 +154,7 @@ _copyAppend(Append *from)
153
154
* ----------------
154
155
*/
155
156
Node_Copy (from , newnode , unionplans );
157
+ Node_Copy (from , newnode , unionrts );
156
158
newnode -> unionrelid = from -> unionrelid ;
157
159
Node_Copy (from , newnode , unionrtentries );
158
160
Node_Copy (from , newnode , unionstate );
@@ -190,7 +192,7 @@ _copyScan(Scan *from)
190
192
* ----------------
191
193
*/
192
194
CopyPlanFields ((Plan * ) from , (Plan * ) newnode );
193
- CopyScanFields (from , newnode );
195
+ CopyScanFields (( Scan * ) from , ( Scan * ) newnode );
194
196
195
197
return newnode ;
196
198
}
@@ -310,7 +312,6 @@ static MergeJoin *
310
312
_copyMergeJoin (MergeJoin * from )
311
313
{
312
314
MergeJoin * newnode = makeNode (MergeJoin );
313
- List * newlist ;
314
315
315
316
/* ----------------
316
317
* copy node superclass fields
@@ -326,7 +327,6 @@ _copyMergeJoin(MergeJoin *from)
326
327
Node_Copy (from , newnode , mergeclauses );
327
328
328
329
newnode -> mergesortop = from -> mergesortop ;
329
- newlist = NIL ;
330
330
331
331
newnode -> mergerightorder = (Oid * ) palloc (sizeof (Oid ) * 2 );
332
332
newnode -> mergerightorder [0 ] = from -> mergerightorder [0 ];
@@ -458,7 +458,9 @@ _copySort(Sort *from)
458
458
* ----------------
459
459
*/
460
460
Node_Copy (from , newnode , sortstate );
461
-
461
+ Node_Copy (from , newnode , psortstate );
462
+ newnode -> cleaned = from -> cleaned ;
463
+
462
464
return newnode ;
463
465
}
464
466
@@ -473,8 +475,7 @@ _copyGroup(Group *from)
473
475
Group * newnode = makeNode (Group );
474
476
475
477
CopyPlanFields ((Plan * ) from , (Plan * ) newnode );
476
- CopyTempFields ((Temp * ) from , (Temp * ) newnode );
477
-
478
+
478
479
newnode -> tuplePerGroup = from -> tuplePerGroup ;
479
480
newnode -> numCols = from -> numCols ;
480
481
newnode -> grpColIdx = palloc (from -> numCols * sizeof (AttrNumber ));
@@ -495,14 +496,11 @@ _copyAgg(Agg *from)
495
496
int i ;
496
497
497
498
CopyPlanFields ((Plan * ) from , (Plan * ) newnode );
498
- CopyTempFields ((Temp * ) from , (Temp * ) newnode );
499
499
500
500
newnode -> numAgg = from -> numAgg ;
501
501
newnode -> aggs = palloc (sizeof (Aggreg * ));
502
502
for (i = 0 ; i < from -> numAgg ; i ++ )
503
- {
504
503
newnode -> aggs [i ] = copyObject (from -> aggs [i ]);
505
- }
506
504
507
505
Node_Copy (from , newnode , aggstate );
508
506
@@ -518,8 +516,8 @@ _copyGroupClause(GroupClause *from)
518
516
{
519
517
GroupClause * newnode = makeNode (GroupClause );
520
518
519
+ Node_Copy (from , newnode , entry );
521
520
newnode -> grpOpoid = from -> grpOpoid ;
522
- newnode -> entry = copyObject (from -> entry );
523
521
524
522
return newnode ;
525
523
}
@@ -545,6 +543,8 @@ _copyUnique(Unique *from)
545
543
* copy remainder of node
546
544
* ----------------
547
545
*/
546
+ newnode -> uniqueAttr = pstrdup (from -> uniqueAttr );
547
+ newnode -> uniqueAttrNum = from -> uniqueAttrNum ;
548
548
Node_Copy (from , newnode , uniquestate );
549
549
550
550
return newnode ;
@@ -599,13 +599,7 @@ _copyResdom(Resdom *from)
599
599
newnode -> reslen = from -> reslen ;
600
600
601
601
if (from -> resname != NULL )
602
- {
603
- newnode -> resname = palloc (strlen (from -> resname ) + 1 );
604
- strcpy (newnode -> resname , from -> resname );
605
- }
606
- else
607
- newnode -> resname = (char * ) NULL ;
608
-
602
+ newnode -> resname = pstrdup (from -> resname );
609
603
newnode -> reskey = from -> reskey ;
610
604
newnode -> reskeyop = from -> reskeyop ;
611
605
newnode -> resjunk = from -> resjunk ;
@@ -630,14 +624,12 @@ _copyFjoin(Fjoin *from)
630
624
631
625
newnode -> fj_results = (DatumPtr )
632
626
palloc ((from -> fj_nNodes ) * sizeof (Datum ));
633
-
634
- newnode -> fj_alwaysDone = (BoolPtr )
635
- palloc ((from -> fj_nNodes ) * sizeof (bool ));
636
-
637
627
memmove (from -> fj_results ,
638
628
newnode -> fj_results ,
639
629
(from -> fj_nNodes ) * sizeof (Datum ));
640
630
631
+ newnode -> fj_alwaysDone = (BoolPtr )
632
+ palloc ((from -> fj_nNodes ) * sizeof (bool ));
641
633
memmove (from -> fj_alwaysDone ,
642
634
newnode -> fj_alwaysDone ,
643
635
(from -> fj_nNodes ) * sizeof (bool ));
@@ -741,6 +733,8 @@ _copyConst(Const *from)
741
733
/* ----------------
742
734
* XXX super cheesy hack until parser/planner
743
735
* puts in the right values here.
736
+ *
737
+ * But I like cheese.
744
738
* ----------------
745
739
*/
746
740
if (!from -> constisnull && cached_type != from -> consttype )
@@ -826,6 +820,8 @@ _copyConst(Const *from)
826
820
}
827
821
newnode -> constisnull = from -> constisnull ;
828
822
newnode -> constbyval = from -> constbyval ;
823
+ newnode -> constisset = from -> constisset ;
824
+ newnode -> constiscast = from -> constiscast ;
829
825
830
826
return newnode ;
831
827
}
@@ -847,12 +843,7 @@ _copyParam(Param *from)
847
843
newnode -> paramid = from -> paramid ;
848
844
849
845
if (from -> paramname != NULL )
850
- {
851
846
newnode -> paramname = pstrdup (from -> paramname );
852
- }
853
- else
854
- newnode -> paramname = (char * ) NULL ;
855
-
856
847
newnode -> paramtype = from -> paramtype ;
857
848
Node_Copy (from , newnode , param_tlist );
858
849
@@ -899,11 +890,9 @@ _copyAggreg(Aggreg *from)
899
890
newnode -> aggname = pstrdup (from -> aggname );
900
891
newnode -> basetype = from -> basetype ;
901
892
newnode -> aggtype = from -> aggtype ;
902
- newnode -> usenulls = from -> usenulls ;
903
-
904
893
Node_Copy (from , newnode , target );
905
-
906
894
newnode -> aggno = from -> aggno ;
895
+ newnode -> usenulls = from -> usenulls ;
907
896
908
897
return newnode ;
909
898
}
@@ -937,9 +926,9 @@ _copyArrayRef(ArrayRef *from)
937
926
* copy remainder of node
938
927
* ----------------
939
928
*/
940
- newnode -> refelemtype = from -> refelemtype ;
941
929
newnode -> refattrlength = from -> refattrlength ;
942
930
newnode -> refelemlength = from -> refelemlength ;
931
+ newnode -> refelemtype = from -> refelemtype ;
943
932
newnode -> refelembyval = from -> refelembyval ;
944
933
945
934
Node_Copy (from , newnode , refupperindexpr );
@@ -982,24 +971,19 @@ _copyRel(Rel *from)
982
971
newnode -> tuples = from -> tuples ;
983
972
newnode -> size = from -> size ;
984
973
newnode -> width = from -> width ;
985
- newnode -> indproc = from -> indproc ;
986
-
987
974
Node_Copy (from , newnode , targetlist );
988
975
Node_Copy (from , newnode , pathlist );
989
976
Node_Copy (from , newnode , unorderedpath );
990
977
Node_Copy (from , newnode , cheapestpath );
991
978
newnode -> pruneable = from -> pruneable ;
992
- newnode -> relam = from -> relam ;
993
979
994
980
if (from -> classlist )
995
981
{
996
982
for (len = 0 ; from -> classlist [len ] != 0 ; len ++ )
997
983
;
998
984
newnode -> classlist = (Oid * ) palloc (sizeof (Oid ) * (len + 1 ));
999
985
for (i = 0 ; i < len ; i ++ )
1000
- {
1001
986
newnode -> classlist [i ] = from -> classlist [i ];
1002
- }
1003
987
newnode -> classlist [len ] = 0 ;
1004
988
}
1005
989
@@ -1009,21 +993,21 @@ _copyRel(Rel *from)
1009
993
;
1010
994
newnode -> indexkeys = (int * ) palloc (sizeof (int ) * (len + 1 ));
1011
995
for (i = 0 ; i < len ; i ++ )
1012
- {
1013
996
newnode -> indexkeys [i ] = from -> indexkeys [i ];
1014
- }
1015
997
newnode -> indexkeys [len ] = 0 ;
1016
998
}
1017
999
1000
+ newnode -> relam = from -> relam ;
1001
+ newnode -> indproc = from -> indproc ;
1002
+ Node_Copy (from , newnode , indpred );
1003
+
1018
1004
if (from -> ordering )
1019
1005
{
1020
1006
for (len = 0 ; from -> ordering [len ] != 0 ; len ++ )
1021
1007
;
1022
1008
newnode -> ordering = (Oid * ) palloc (sizeof (Oid ) * (len + 1 ));
1023
1009
for (i = 0 ; i < len ; i ++ )
1024
- {
1025
1010
newnode -> ordering [i ] = from -> ordering [i ];
1026
- }
1027
1011
newnode -> ordering [len ] = 0 ;
1028
1012
}
1029
1013
@@ -1070,15 +1054,9 @@ CopyPathFields(Path *from, Path *newnode)
1070
1054
newnode -> p_ordering .ord .sortop =
1071
1055
(Oid * ) palloc (sizeof (Oid ) * (len + 1 ));
1072
1056
for (i = 0 ; i < len ; i ++ )
1073
- {
1074
1057
newnode -> p_ordering .ord .sortop [i ] = ordering [i ];
1075
- }
1076
1058
newnode -> p_ordering .ord .sortop [len ] = 0 ;
1077
1059
}
1078
- else
1079
- {
1080
- newnode -> p_ordering .ord .sortop = NULL ;
1081
- }
1082
1060
}
1083
1061
else
1084
1062
{
@@ -1138,9 +1116,7 @@ _copyIndexPath(IndexPath *from)
1138
1116
;
1139
1117
newnode -> indexkeys = (int * ) palloc (sizeof (int ) * (len + 1 ));
1140
1118
for (i = 0 ; i < len ; i ++ )
1141
- {
1142
1119
newnode -> indexkeys [i ] = from -> indexkeys [i ];
1143
- }
1144
1120
newnode -> indexkeys [len ] = 0 ;
1145
1121
}
1146
1122
@@ -1364,6 +1340,7 @@ _copyHInfo(HInfo *from)
1364
1340
* copy remainder of node
1365
1341
* ----------------
1366
1342
*/
1343
+ CopyJoinMethodFields ((JoinMethod * )from , (JoinMethod * )newnode );
1367
1344
newnode -> hashop = from -> hashop ;
1368
1345
1369
1346
return newnode ;
@@ -1382,6 +1359,7 @@ _copyMInfo(MInfo *from)
1382
1359
* copy remainder of node
1383
1360
* ----------------
1384
1361
*/
1362
+ CopyJoinMethodFields ((JoinMethod * )from , (JoinMethod * )newnode );
1385
1363
Node_Copy (from , newnode , m_ordering );
1386
1364
1387
1365
return newnode ;
@@ -1429,15 +1407,17 @@ _copyStream(Stream *from)
1429
1407
newnode -> pathptr = from -> pathptr ;
1430
1408
newnode -> cinfo = from -> cinfo ;
1431
1409
newnode -> clausetype = from -> clausetype ;
1432
- newnode -> groupup = from -> groupup ;
1433
- newnode -> groupcost = from -> groupcost ;
1434
- newnode -> groupsel = from -> groupsel ;
1410
+
1435
1411
newnode -> upstream = (StreamPtr ) NULL ; /* only copy nodes
1436
1412
* downwards! */
1437
1413
Node_Copy (from , newnode , downstream );
1438
1414
if (newnode -> downstream )
1439
1415
((Stream * ) newnode -> downstream )-> upstream = (Stream * ) newnode ;
1440
1416
1417
+ newnode -> groupup = from -> groupup ;
1418
+ newnode -> groupcost = from -> groupcost ;
1419
+ newnode -> groupsel = from -> groupsel ;
1420
+
1441
1421
return newnode ;
1442
1422
}
1443
1423
@@ -1462,12 +1442,15 @@ _copyRangeTblEntry(RangeTblEntry *from)
1462
1442
{
1463
1443
RangeTblEntry * newnode = makeNode (RangeTblEntry );
1464
1444
1465
- memcpy (newnode , from , sizeof (RangeTblEntry ));
1466
1445
if (from -> relname )
1467
1446
newnode -> relname = pstrdup (from -> relname );
1468
1447
if (from -> refname )
1469
1448
newnode -> refname = pstrdup (from -> refname );
1449
+ newnode -> relid = from -> relid ;
1450
+ newnode -> inh = from -> inh ;
1451
+ newnode -> inFromCl = from -> inFromCl ;
1470
1452
1453
+
1471
1454
return newnode ;
1472
1455
}
1473
1456
@@ -1499,13 +1482,8 @@ _copyTypeName(TypeName *from)
1499
1482
TypeName * newnode = makeNode (TypeName );
1500
1483
1501
1484
if (from -> name )
1502
- {
1503
1485
newnode -> name = pstrdup (from -> name );
1504
- }
1505
- else
1506
- {
1507
- from -> name = (char * ) 0 ;
1508
- }
1486
+ newnode -> timezone = from -> timezone ;
1509
1487
newnode -> setof = from -> setof ;
1510
1488
Node_Copy (from , newnode , arrayBounds );
1511
1489
newnode -> typlen = from -> typlen ;
@@ -1524,40 +1502,25 @@ _copyQuery(Query *from)
1524
1502
{
1525
1503
NotifyStmt * from_notify = (NotifyStmt * ) from -> utilityStmt ;
1526
1504
NotifyStmt * n = makeNode (NotifyStmt );
1527
- int length = strlen (from_notify -> relname );
1528
1505
1529
- n -> relname = palloc (length + 1 );
1530
- strcpy (n -> relname , from_notify -> relname );
1506
+ n -> relname = pstrdup (from_notify -> relname );
1531
1507
newnode -> utilityStmt = (Node * ) n ;
1532
1508
}
1533
1509
newnode -> resultRelation = from -> resultRelation ;
1534
- /* probably should dup this string instead of just pointing */
1535
- /* to the old one --djm */
1536
1510
if (from -> into )
1537
- {
1538
1511
newnode -> into = pstrdup (from -> into );
1539
- }
1540
- else
1541
- {
1542
- newnode -> into = (char * ) 0 ;
1543
- }
1544
1512
newnode -> isPortal = from -> isPortal ;
1545
1513
newnode -> isBinary = from -> isBinary ;
1546
1514
newnode -> unionall = from -> unionall ;
1547
1515
if (from -> uniqueFlag )
1548
- {
1549
- newnode -> uniqueFlag = (char * ) palloc (strlen (from -> uniqueFlag ) + 1 );
1550
- strcpy (newnode -> uniqueFlag , from -> uniqueFlag );
1551
- }
1552
- else
1553
- newnode -> uniqueFlag = NULL ;
1516
+ newnode -> uniqueFlag = pstrdup (from -> uniqueFlag );
1554
1517
Node_Copy (from , newnode , sortClause );
1555
1518
Node_Copy (from , newnode , rtable );
1556
1519
Node_Copy (from , newnode , targetList );
1557
1520
Node_Copy (from , newnode , qual );
1558
1521
1559
1522
Node_Copy (from , newnode , groupClause );
1560
- Node_Copy (from , newnode , havingQual ); /* currently ignored */
1523
+ Node_Copy (from , newnode , havingQual );
1561
1524
1562
1525
newnode -> qry_numAgg = from -> qry_numAgg ;
1563
1526
if (from -> qry_numAgg > 0 )
@@ -1567,8 +1530,6 @@ _copyQuery(Query *from)
1567
1530
for (i = 0 ; i < from -> qry_numAgg ; i ++ )
1568
1531
newnode -> qry_aggs [i ] = _copyAggreg (from -> qry_aggs [i ]);
1569
1532
}
1570
- else
1571
- newnode -> qry_aggs = NULL ;
1572
1533
1573
1534
if (from -> unionClause )
1574
1535
{
@@ -1578,8 +1539,6 @@ _copyQuery(Query *from)
1578
1539
temp_list = lappend (temp_list ,copyObject (lfirst (ulist )));
1579
1540
newnode -> unionClause = temp_list ;
1580
1541
}
1581
- else
1582
- newnode -> unionClause = NULL ;
1583
1542
1584
1543
return newnode ;
1585
1544
}
0 commit comments