• B
    Fix Default partition level for indexes · e0e8703e
    Bhuvnesh Chaudhary 提交于
    - Before building Index object (IMDIndex), we build LogicalIndexes
      via calling `gpdb::Plgidx(oidRel)` in which a partition tables is
      traversed and index  information (such as logicalIndexOid,
      nColumns, indexKeys, indPred, indExprs, indIsUnique, partCons,
      defaultLevels) is captured.
    - For Indexes which are available on all the partitions partCons
      and defaultLevels are NULL/empty.
    - Later in `CTranslatorRelcacheToDXL::PmdindexPartTable` to build
      Index object, we use the derived LogicalIndexes information and
      populates the array  holding the levels on which default
      partitions exists. But since defaultLevels is NIL in this case,
      pdrgpulDefaultLevels is set to empty i,e `default partitions on levels: {}`
    - This causes an issue while trying to build the propagation expression,
      as because of wrong number of default partitions on level we mark the
      scan as partial and tries to construct a test propagation expression
      instead of a const propagation expression.
    - This patch fixes the issue by marking the default partitions on
      levels for index equal to the default partitions on levels for the
      part relation if the index exists on all the parts.
    Signed-off-by: NJemish Patel <jpatel@pivotal.io>
    e0e8703e
CTranslatorRelcacheToDXL.cpp 89.6 KB