diff --git a/core/lib/Drupal/Core/Database/Driver/mysql/Connection.php b/core/lib/Drupal/Core/Database/Driver/mysql/Connection.php index 637f713b43..1b4e682aee 100644 --- a/core/lib/Drupal/Core/Database/Driver/mysql/Connection.php +++ b/core/lib/Drupal/Core/Database/Driver/mysql/Connection.php @@ -203,27 +203,24 @@ public static function open(array &$connection_options = []) { * {@inheritdoc} */ public function escapeField($field) { - if (!isset($this->escapedNames[$field])) { - $escaped = preg_replace('/[^A-Za-z0-9_.]+/', '', $field); - - // Quote fields so that MySQL reserved words like 'function' can be used - // as column names. Sometimes the 'table.column_name' format is passed in. - // For example, - // \Drupal\Core\Entity\Sql\SqlContentEntityStorage::buildQuery() adds a - // condition on "base.uid" while loading user entities. - $this->escapedNames[$field] = '"' . str_replace('.', '"."', $escaped) . '"'; - } - return $this->escapedNames[$field]; + $field = parent::escapeField($field); + + // Quote fields so that MySQL reserved words like 'function' can be used + // as column names. Sometimes the 'table.column_name' format is passed in. + // For example, + // \Drupal\Core\Entity\Sql\SqlContentEntityStorage::buildQuery() adds a + // condition on "base.uid" while loading user entities. + return '"' . str_replace('.', '"."', $field) . '"'; } /** * {@inheritdoc} */ public function escapeAlias($field) { - if (!isset($this->escapedAliases[$field])) { - $this->escapedAliases[$field] = '"' . preg_replace('/[^A-Za-z0-9_]+/', '', $field) . '"'; - } - return $this->escapedAliases[$field]; + // Quote fields so that MySQL reserved words like 'function' can be used + // as aliases. + $field = parent::escapeAlias($field); + return '"' . $field . '"'; } /**