@ -57,8 +57,11 @@
# define COPY_POINTER_FIELD(fldname, sz) \
# define COPY_POINTER_FIELD(fldname, sz) \
do { \
do { \
Size _size = ( sz ) ; \
Size _size = ( sz ) ; \
newnode - > fldname = palloc ( _size ) ; \
if ( _size > 0 ) \
memcpy ( newnode - > fldname , from - > fldname , _size ) ; \
{ \
newnode - > fldname = palloc ( _size ) ; \
memcpy ( newnode - > fldname , from - > fldname , _size ) ; \
} \
} while ( 0 )
} while ( 0 )
/* Copy a parse location field (for Copy, this is same as scalar case) */
/* Copy a parse location field (for Copy, this is same as scalar case) */
@ -296,12 +299,9 @@ _copyRecursiveUnion(const RecursiveUnion *from)
*/
*/
COPY_SCALAR_FIELD ( wtParam ) ;
COPY_SCALAR_FIELD ( wtParam ) ;
COPY_SCALAR_FIELD ( numCols ) ;
COPY_SCALAR_FIELD ( numCols ) ;
if ( from - > numCols > 0 )
COPY_POINTER_FIELD ( dupColIdx , from - > numCols * sizeof ( AttrNumber ) ) ;
{
COPY_POINTER_FIELD ( dupOperators , from - > numCols * sizeof ( Oid ) ) ;
COPY_POINTER_FIELD ( dupColIdx , from - > numCols * sizeof ( AttrNumber ) ) ;
COPY_POINTER_FIELD ( dupCollations , from - > numCols * sizeof ( Oid ) ) ;
COPY_POINTER_FIELD ( dupOperators , from - > numCols * sizeof ( Oid ) ) ;
COPY_POINTER_FIELD ( dupCollations , from - > numCols * sizeof ( Oid ) ) ;
}
COPY_SCALAR_FIELD ( numGroups ) ;
COPY_SCALAR_FIELD ( numGroups ) ;
return newnode ;
return newnode ;
@ -875,13 +875,10 @@ _copyMergeJoin(const MergeJoin *from)
COPY_SCALAR_FIELD ( skip_mark_restore ) ;
COPY_SCALAR_FIELD ( skip_mark_restore ) ;
COPY_NODE_FIELD ( mergeclauses ) ;
COPY_NODE_FIELD ( mergeclauses ) ;
numCols = list_length ( from - > mergeclauses ) ;
numCols = list_length ( from - > mergeclauses ) ;
if ( numCols > 0 )
COPY_POINTER_FIELD ( mergeFamilies , numCols * sizeof ( Oid ) ) ;
{
COPY_POINTER_FIELD ( mergeCollations , numCols * sizeof ( Oid ) ) ;
COPY_POINTER_FIELD ( mergeFamilies , numCols * sizeof ( Oid ) ) ;
COPY_POINTER_FIELD ( mergeStrategies , numCols * sizeof ( int ) ) ;
COPY_POINTER_FIELD ( mergeCollations , numCols * sizeof ( Oid ) ) ;
COPY_POINTER_FIELD ( mergeNullsFirst , numCols * sizeof ( bool ) ) ;
COPY_POINTER_FIELD ( mergeStrategies , numCols * sizeof ( int ) ) ;
COPY_POINTER_FIELD ( mergeNullsFirst , numCols * sizeof ( bool ) ) ;
}
return newnode ;
return newnode ;
}
}
@ -1016,12 +1013,9 @@ _copyAgg(const Agg *from)
COPY_SCALAR_FIELD ( aggstrategy ) ;
COPY_SCALAR_FIELD ( aggstrategy ) ;
COPY_SCALAR_FIELD ( aggsplit ) ;
COPY_SCALAR_FIELD ( aggsplit ) ;
COPY_SCALAR_FIELD ( numCols ) ;
COPY_SCALAR_FIELD ( numCols ) ;
if ( from - > numCols > 0 )
COPY_POINTER_FIELD ( grpColIdx , from - > numCols * sizeof ( AttrNumber ) ) ;
{
COPY_POINTER_FIELD ( grpOperators , from - > numCols * sizeof ( Oid ) ) ;
COPY_POINTER_FIELD ( grpColIdx , from - > numCols * sizeof ( AttrNumber ) ) ;
COPY_POINTER_FIELD ( grpCollations , from - > numCols * sizeof ( Oid ) ) ;
COPY_POINTER_FIELD ( grpOperators , from - > numCols * sizeof ( Oid ) ) ;
COPY_POINTER_FIELD ( grpCollations , from - > numCols * sizeof ( Oid ) ) ;
}
COPY_SCALAR_FIELD ( numGroups ) ;
COPY_SCALAR_FIELD ( numGroups ) ;
COPY_SCALAR_FIELD ( transitionSpace ) ;
COPY_SCALAR_FIELD ( transitionSpace ) ;
COPY_BITMAPSET_FIELD ( aggParams ) ;
COPY_BITMAPSET_FIELD ( aggParams ) ;
@ -1043,19 +1037,13 @@ _copyWindowAgg(const WindowAgg *from)
COPY_SCALAR_FIELD ( winref ) ;
COPY_SCALAR_FIELD ( winref ) ;
COPY_SCALAR_FIELD ( partNumCols ) ;
COPY_SCALAR_FIELD ( partNumCols ) ;
if ( from - > partNumCols > 0 )
COPY_POINTER_FIELD ( partColIdx , from - > partNumCols * sizeof ( AttrNumber ) ) ;
{
COPY_POINTER_FIELD ( partOperators , from - > partNumCols * sizeof ( Oid ) ) ;
COPY_POINTER_FIELD ( partColIdx , from - > partNumCols * sizeof ( AttrNumber ) ) ;
COPY_POINTER_FIELD ( partCollations , from - > partNumCols * sizeof ( Oid ) ) ;
COPY_POINTER_FIELD ( partOperators , from - > partNumCols * sizeof ( Oid ) ) ;
COPY_POINTER_FIELD ( partCollations , from - > partNumCols * sizeof ( Oid ) ) ;
}
COPY_SCALAR_FIELD ( ordNumCols ) ;
COPY_SCALAR_FIELD ( ordNumCols ) ;
if ( from - > ordNumCols > 0 )
COPY_POINTER_FIELD ( ordColIdx , from - > ordNumCols * sizeof ( AttrNumber ) ) ;
{
COPY_POINTER_FIELD ( ordOperators , from - > ordNumCols * sizeof ( Oid ) ) ;
COPY_POINTER_FIELD ( ordColIdx , from - > ordNumCols * sizeof ( AttrNumber ) ) ;
COPY_POINTER_FIELD ( ordCollations , from - > ordNumCols * sizeof ( Oid ) ) ;
COPY_POINTER_FIELD ( ordOperators , from - > ordNumCols * sizeof ( Oid ) ) ;
COPY_POINTER_FIELD ( ordCollations , from - > ordNumCols * sizeof ( Oid ) ) ;
}
COPY_SCALAR_FIELD ( frameOptions ) ;
COPY_SCALAR_FIELD ( frameOptions ) ;
COPY_NODE_FIELD ( startOffset ) ;
COPY_NODE_FIELD ( startOffset ) ;
COPY_NODE_FIELD ( endOffset ) ;
COPY_NODE_FIELD ( endOffset ) ;