Implementation of CREATE OR REPLACE TABLE.
This is needed to make replication with GTID work reliable with CREATE ... SELECT.
Using CREATE OR REPLACE TABLE will be identical to
DROP TABLE IF EXISTS table_name;
CREATE TABLE ...;
The above will be atomic (now one can create the same table between drop and create).
Temporary tables will not shadow the table name for the DROP
The CREATE TABLE tells us already if we are using a temporary table or not.
If this would not be the case, we could with the statement drop a temporary table but still not be able to create the original table.