return ( isset($Db) ? $Db : null );
}
+ public function sql_name_cast_text() {
+ $name = $this->db()->sql_name($this->name);
+ if ($fct = $this->db()->conf_type('cast_text')) $name = $fct($name);
+ return $name;
+ }
+
public function sql_name() {
return $this->db()->sql_name($this->name);
}
foreach ($this->fields() as $k => $field) {
+ $name = $field->sql_name();
+ if (!preg_match('/^(char|varchar|text|blog)/i',$field->type)) $name = $field->sql_name_cast_text();
+
// No empty values
$v = isset($values[$k]) ? $values[$k] : null;
if (strcmp($v,'')==0 or $v=='!' or $v=='~') continue;
- $number = $field->numeric();
// Equal / Not Equal
$equal = '=';
} else {
// Integer
- if ($number) {
+ if ($field->numeric()) {
if (strtolower($v)=='null') $v = '0';
#$k = "COLAESCE($k,0)";
- // Date, Time
+ // Date, Time according to field->string() behavior
} else {
$v = $this->db()->quote($v);
}
if (preg_match("/(LIKE|$regexp) ..$/","$equal$v") and $field->null) {
- $k = 'COALESCE('.$field->sql_name().','.$this->db()->quote('').")";
+ $k = 'COALESCE('.$name.','.$this->db()->quote('').")";
} elseif ($field->extras) {
$k = $this->extras[$k]->sql_name();
- } elseif ($number and $field->null) {
- $k = 'COALESCE('.$field->sql_name().",0)";
+ } elseif ($field->numeric() and $field->null) {
+ $k = 'COALESCE('.$name.",0)";
- } elseif (!$number and $field->null) {
- $k = 'COALESCE('.$field->sql_name().",'')";
+ } elseif (!$field->numeric() and $field->null) {
+ $k = 'COALESCE('.$name.",'')";
} else {
- $k = $field->sql_name();
+ $k = $name;
}
return $chr . $str . $chr;
},
+'cast_text' => function($name) {
+ return "$name::text";
+},
+
'localFile' => array (getenv('HOME').'/.pgpass','^[^:]+:[^:]+:<D.NAME>:(?P<user>[^:]+):(?<password>[^:]+)'),
'databases' => 'SELECT datname as name,pg_catalog.pg_get_userbyid(datdba) as owner,pg_catalog.pg_encoding_encoding) as encoding, datcollate as "collate",datctype as "Ctype" FROM pg_catalog.pg_database',