[eluser]mattalexx[/eluser]
[quote author="xwero" date="1228754614"]That is strange because the $_reserved_identifiers array in the DB_driver only contains the value * and mysql_driver doesn't contain additional reserved_identifiers.
I tested it and i was able to insert and update. Do you have an $escape boolean that is global? that is the only way i can think of how this bug could occur.[/quote]
As it turns out, this post never belonged under "Bug Reports". In a query that happens earlier in the script, I was calling CI_DB_active_record:

elect() with the second parameter ($escape) set to true. This sets CI_DB_driver::_protect_identifiers to true, which was screwing up all later queries. To fix, I changed this:
Code:
$values = array();
$values['key'] = $this->key;
$this->db->insert('table', $values);
... to this:
Code:
$values = array();
$values['key'] = $this->key;
$this->db->_protect_identifiers = TRUE;
$this->db->insert('table', $values);
Not the nicest solution, I will admit, but I'm onto the next thing.