protected function mapConditionOperator($operator) {
        // $specials does not use drupal_static as its value never changes.
        static $specials = array(
            'BETWEEN' => array('delimiter' => ' AND '),
            'IN' => array('delimiter' => ', ', 'prefix' => '(', 'postfix' => ')'),
            'NOT IN' => array('delimiter' => ', ', 'prefix' => '(', 'postfix' => ')'),
            'EXISTS' => array('prefix' => '(', 'postfix' => ')'),
            'NOT EXISTS' => array('prefix' => '(', 'postfix' => ')'),
            'IS NULL' => array('use_value' => FALSE),
            'IS NOT NULL' => array('use_value' => FALSE),
            // Use backslash for escaping wildcard characters.
            'LIKE' => array('postfix' => " ESCAPE '\\\\'"),
            'NOT LIKE' => array('postfix' => " ESCAPE '\\\\'"),
            // These ones are here for performance reasons.
            '=' => array(),
            '<' => array(),
            '>' => array(),
            '>=' => array(),
            '<=' => array(),
        );
        if (isset($specials[$operator])) {
            $return = $specials[$operator];
        }
        else {
            // We need to upper case because PHP index matches are case sensitive but
            // do not need the more expensive drupal_strtoupper because SQL statements are ASCII.
            $operator = strtoupper($operator);
            $return = isset($specials[$operator]) ? $specials[$operator] : array();
        }

        $return += array('operator' => $operator);

        return $return;
    }