@@ -1582,36 +1582,24 @@ createVariableInternal(Package *package, text *name, Oid typid,
15821582static void
15831583copyValue (VarState * src , VarState * dest , Variable * destVar )
15841584{
1585- MemoryContext oldcxt ,
1586- destctx ;
1585+ MemoryContext oldcxt ;
15871586
1588- destctx = destVar -> package -> hctxTransact ;
1589- oldcxt = MemoryContextSwitchTo (destctx );
1587+ oldcxt = MemoryContextSwitchTo (destVar -> package -> hctxTransact );
15901588
15911589 if (destVar -> typid == RECORDOID )
15921590 /* copy record value */
15931591 {
1594- bool found ;
1595- HASH_SEQ_STATUS * rstat ;
1596- HashRecordEntry * item_prev ,
1597- * item_new ;
1592+ HASH_SEQ_STATUS rstat ;
1593+ HashRecordEntry * item_src ;
15981594 RecordVar * record_src = & src -> value .record ;
15991595 RecordVar * record_dest = & dest -> value .record ;
16001596
16011597 init_record (record_dest , record_src -> tupdesc , destVar );
16021598
16031599 /* Copy previous history entry into the new one */
1604- rstat = (HASH_SEQ_STATUS * ) palloc0 (sizeof (HASH_SEQ_STATUS ));
1605- hash_seq_init (rstat , record_src -> rhash );
1606- while ((item_prev = (HashRecordEntry * ) hash_seq_search (rstat )) != NULL )
1607- {
1608- HashRecordKey k ;
1609-
1610- k = item_prev -> key ;
1611- item_new = (HashRecordEntry * ) hash_search (record_dest -> rhash , & k ,
1612- HASH_ENTER , & found );
1613- item_new -> tuple = heap_copytuple (item_prev -> tuple );
1614- }
1600+ hash_seq_init (& rstat , record_src -> rhash );
1601+ while ((item_src = (HashRecordEntry * ) hash_seq_search (& rstat )) != NULL )
1602+ copy_record (record_dest , item_src -> tuple , destVar );
16151603 }
16161604 else
16171605 /* copy scalar value */
0 commit comments