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:
parent
6d59b289a9
commit
4afafbde25
|
@ -3029,7 +3029,7 @@ class wpdb {
|
||||||
. '|INSERT(?:\s+LOW_PRIORITY|\s+DELAYED|\s+HIGH_PRIORITY)?(?:\s+IGNORE)?(?:\s+INTO)?'
|
. '|INSERT(?:\s+LOW_PRIORITY|\s+DELAYED|\s+HIGH_PRIORITY)?(?:\s+IGNORE)?(?:\s+INTO)?'
|
||||||
. '|REPLACE(?:\s+LOW_PRIORITY|\s+DELAYED)?(?:\s+INTO)?'
|
. '|REPLACE(?:\s+LOW_PRIORITY|\s+DELAYED)?(?:\s+INTO)?'
|
||||||
. '|UPDATE(?:\s+LOW_PRIORITY)?(?:\s+IGNORE)?'
|
. '|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 ) ) {
|
. ')\s+((?:[0-9a-zA-Z$_.`-]|[\xC2-\xDF][\x80-\xBF])+)/is', $query, $maybe ) ) {
|
||||||
return str_replace( '`', '', $maybe[1] );
|
return str_replace( '`', '', $maybe[1] );
|
||||||
}
|
}
|
||||||
|
|
|
@ -562,6 +562,8 @@ class Tests_DB extends WP_UnitTestCase {
|
||||||
"DELETE QUICK $table",
|
"DELETE QUICK $table",
|
||||||
"DELETE IGNORE $table",
|
"DELETE IGNORE $table",
|
||||||
"DELETE LOW_PRIORITY FROM $table",
|
"DELETE LOW_PRIORITY FROM $table",
|
||||||
|
"DELETE a FROM $table a",
|
||||||
|
"DELETE `a` FROM $table a",
|
||||||
|
|
||||||
// STATUS
|
// STATUS
|
||||||
"SHOW TABLE STATUS LIKE '$table'",
|
"SHOW TABLE STATUS LIKE '$table'",
|
||||||
|
|
Loading…
Reference in New Issue