Thanks for catching this. For now this isn't a problem since generate_partition_qual() is crafting PartitionBoundInfo which it doesn't use anywhere else. But if the function gets used where the PartitionBoundSpec is being used somewhere else as well.
Yes, this behavior currently does not affect adversely, but I think this
function is quite useful for future enhancements and should be fixed.
While you are at it, can we use castNode() in place of PartitionBoundSpec *spec = (PartitionBoundSpec *) bound; Or do you think it should be done separately?
I have made this change at couple of places applicable.