function set($key, $val)
{
if (array_key_exists($key, $this->fields)) {
$val = is_null($val) && $this->fields[$key]['nullable'] ? NULL : $this->db->value($this->fields[$key]['pdo_type'], $val);
if ($this->fields[$key]['initial'] !== $val || $this->fields[$key]['default'] !== $val && is_null($val)) {
$this->fields[$key]['changed'] = TRUE;
}
return $this->fields[$key]['value'] = $val;
}
// adjust result on existing expressions
if (isset($this->adhoc[$key])) {
$this->adhoc[$key]['value'] = $val;
} else {
// Parenthesize expression in case it's a subquery
$this->adhoc[$key] = ['expr' => '(' . $val . ')', 'value' => NULL];
}
return $val;
}