Q:

Can the wp_posts table have the same slug (post_name) in multiple statuses (post_status)?

I'm using function get_posts to retrieve a set of post objects that are my custom post type (CPT).  I am counting on being able to programmatically flip these posts between status "publish", "pending" and "draft".
Before I go through the trouble of detecting and "fixing" potential duplicates -- is it even something I have to worry about?  Is there any scenario where the same CPT post_name can reside in the wp_posts table in more than one (row) of differing post_status:  publish, pending or draft?
(edit)  After some experimentation I found that when inserting a post of status "pending", it ignores the post_name parameter - so that ends up being blank in the database.  And yes, it will allow many rows in the wp_posts table with the same post_name of '' (blank).  I'm sure there's a good reason for this but it is not what I expected that's for sure.  

A:

No, multiple posts with the same CPT and post name (slug) are not possible. Someone can work hard and ruin the DB by writing into it some illegal values, but that should not be something you think of when writing your code.
Posts in their initial state are not true posts, they are just place holders, therefor while your observation is valid, it is not really relevant for usual usage pattern of wordpress API, unless once again your aim is to break things.

