1. 07 6月, 2016 2 次提交
    • H
      Don't call ExecAssignScanProjectionInfo while in partitionMemoryContext. · d7662fd7
      Heikki Linnakangas 提交于
      This allows removing the weird pfree() of the resultTupleSlot's tuple
      descriptor. What would've happened without the pfree() is that the old
      slot was allocated in the first ExecAssignScanProjectionInfo() call, in
      partitionMemoryContext, and then immediately destroyed when the memory
      context was reset. The second call to ExecAssignScanProjectionInfo() tries
      to free the slot, again, causing the segfault. But we can avoid that
      by this rearrangement of the calls in a cleaner way.
      
      In the passing, clean up the code a bit. I found having separate variables,
      indexState and scanState, which point to the same struct, to be confusing.
      d7662fd7
    • H
      Fix out-of-bounds writes to scanTupleSlot · a33699bc
      Heikki Linnakangas 提交于
      ss_ScanTupleSlot is not an array, it's a single slot. The slot is allocated
      from a bigger array, however, so this trampled over some other slot that was
      allocated right after the scan slot. This has apparently been harmless, as
      no-one's noticed, but it's surely wrong.
      
      I bumped into this in the PostgreSQL 8.3 merge branch, where I had changed
      the way the slots are allocated so that they're not stored in one big array
      anymore. This bug led to segfaults in that case.
      a33699bc
  2. 28 10月, 2015 1 次提交