With adaptive query optimization, the statement executor can adjust an SQL execution plan (which was created at compile-time) at run-time.
SQL plan directives store statistical information about past executions of an SQL statement. They're used to (hopefully) create a more optimal plan for a future execution of the SQL statement.