Merge pull request #24295 from solution-libre/fix-update-extrafield-psql

Fix UpdateField with PostgreSQL
This commit is contained in:
Laurent Destailleur 2023-03-22 13:33:39 +01:00 committed by GitHub
commit e32ab31697
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -1183,7 +1183,7 @@ class DoliDBPgsql extends DoliDB
$sql = "ALTER TABLE ".$table." ADD ".$field_name." "; $sql = "ALTER TABLE ".$table." ADD ".$field_name." ";
$sql .= $field_desc['type']; $sql .= $field_desc['type'];
if (preg_match("/^[^\s]/i", $field_desc['value'])) { if (preg_match("/^[^\s]/i", $field_desc['value'])) {
if (!in_array($field_desc['type'], array('int', 'date', 'datetime')) && $field_desc['value']) { if (!in_array($field_desc['type'], array('smallint', 'int', 'date', 'datetime')) && $field_desc['value']) {
$sql .= "(".$field_desc['value'].")"; $sql .= "(".$field_desc['value'].")";
} }
} }
@ -1225,10 +1225,12 @@ class DoliDBPgsql extends DoliDB
{ {
// phpcs:enable // phpcs:enable
$sql = "ALTER TABLE ".$table; $sql = "ALTER TABLE ".$table;
$sql .= " MODIFY COLUMN ".$field_name." ".$field_desc['type']; $sql .= ' ALTER COLUMN "'.$field_name.'" TYPE '.$field_desc['type'];
if (in_array($field_desc['type'], array('double', 'varchar')) && $field_desc['value']) { if (preg_match("/^[^\s]/i", $field_desc['value'])) {
if (!in_array($field_desc['type'], array('smallint', 'int', 'date', 'datetime')) && $field_desc['value']) {
$sql .= "(".$field_desc['value'].")"; $sql .= "(".$field_desc['value'].")";
} }
}
if ($field_desc['null'] == 'not null' || $field_desc['null'] == 'NOT NULL') { if ($field_desc['null'] == 'not null' || $field_desc['null'] == 'NOT NULL') {
// We will try to change format of column to NOT NULL. To be sure the ALTER works, we try to update fields that are NULL // We will try to change format of column to NOT NULL. To be sure the ALTER works, we try to update fields that are NULL