Database: Find the correct table names in `DELETE` queries with table aliases

Previously, `wpdb::get_table_from_query()` would not find the correct table name in the query `DELETE a FROM table a`, due to not recognising the table alias immediately after the `DELETE` as correct syntax.

Fixes #37660.



git-svn-id: https://develop.svn.wordpress.org/trunk@38507 602fd350-edb4-49c9-b593-d223f7449a82
This commit is contained in:
Gary Pendergast 2016-09-02 00:18:49 +00:00
parent 6d59b289a9
commit 4afafbde25
2 changed files with 3 additions and 1 deletions

View File

@ -3029,7 +3029,7 @@ class wpdb {
. '|INSERT(?:\s+LOW_PRIORITY|\s+DELAYED|\s+HIGH_PRIORITY)?(?:\s+IGNORE)?(?:\s+INTO)?'
. '|REPLACE(?:\s+LOW_PRIORITY|\s+DELAYED)?(?:\s+INTO)?'
. '|UPDATE(?:\s+LOW_PRIORITY)?(?:\s+IGNORE)?'
. '|DELETE(?:\s+LOW_PRIORITY|\s+QUICK|\s+IGNORE)*(?:\s+FROM)?'
. '|DELETE(?:\s+LOW_PRIORITY|\s+QUICK|\s+IGNORE)*(?:.+?FROM)?'
. ')\s+((?:[0-9a-zA-Z$_.`-]|[\xC2-\xDF][\x80-\xBF])+)/is', $query, $maybe ) ) {
return str_replace( '`', '', $maybe[1] );
}

View File

@ -562,6 +562,8 @@ class Tests_DB extends WP_UnitTestCase {
"DELETE QUICK $table",
"DELETE IGNORE $table",
"DELETE LOW_PRIORITY FROM $table",
"DELETE a FROM $table a",
"DELETE `a` FROM $table a",
// STATUS
"SHOW TABLE STATUS LIKE '$table'",