function upgrade_495_pgsql() { $table_mailbox = table_by_key('mailbox'); if (!_pgsql_field_exists($table_mailbox, 'local_part')) { db_query_parsed("ALTER TABLE {$table_mailbox} add column local_part varchar(255) "); db_query_parsed("UPDATE {$table_mailbox} SET local_part = substring(username from '^(.*)@')"); db_query_parsed("ALTER TABLE {$table_mailbox} alter column local_part SET NOT NULL"); } }
/** * Changes between 2.1 and moving to sf.net */ function upgrade_4_pgsql() { $table_domain = table_by_key('domain'); $table_admin = table_by_key('admin'); $table_alias = table_by_key('alias'); $table_domain_admins = table_by_key('domain_admins'); $table_log = table_by_key('log'); $table_mailbox = table_by_key('mailbox'); $table_vacation = table_by_key('vacation'); if (!_pgsql_field_exists($table_domain, 'quota')) { $result = db_query_parsed("ALTER TABLE {$table_domain} ADD COLUMN quota int NOT NULL default '0'"); } $result = db_query_parsed("ALTER TABLE {$table_domain} ALTER COLUMN domain DROP DEFAULT"); if (!_pgsql_object_exists('domain_domain_active')) { $result = db_query_parsed("CREATE INDEX domain_domain_active ON domain(domain,active)"); } $result = db_query_parsed("ALTER TABLE {$table_domain_admins} ALTER COLUMN domain DROP DEFAULT"); $result = db_query_parsed("ALTER TABLE {$table_alias} ALTER COLUMN address DROP DEFAULT"); $result = db_query_parsed("ALTER TABLE {$table_alias} ALTER COLUMN domain DROP DEFAULT"); if (!_pgsql_object_exists('alias_address_active')) { $result = db_query_parsed("CREATE INDEX alias_address_active ON alias(address,active)"); } $result = db_query_parsed("ALTER TABLE {$table_domain_admins} ALTER COLUMN username DROP DEFAULT"); $result = db_query_parsed("ALTER TABLE {$table_domain_admins} ALTER COLUMN domain DROP DEFAULT"); $result = db_query_parsed("\n BEGIN;\n ALTER TABLE {$table_log} RENAME COLUMN data TO data_old;\n ALTER TABLE {$table_log} ADD COLUMN data text NOT NULL default '';\n UPDATE {$table_log} SET data = CAST(data_old AS text);\n ALTER TABLE {$table_log} DROP COLUMN data_old;\n COMMIT;"); $result = db_query_parsed("ALTER TABLE {$table_mailbox} ALTER COLUMN username DROP DEFAULT"); $result = db_query_parsed("ALTER TABLE {$table_mailbox} ALTER COLUMN domain DROP DEFAULT"); $result = db_query_parsed("\n BEGIN;\n ALTER TABLE {$table_mailbox} RENAME COLUMN domain TO domain_old;\n ALTER TABLE {$table_mailbox} ADD COLUMN domain varchar(255) REFERENCES domain (domain);\n UPDATE {$table_mailbox} SET domain = domain_old;\n ALTER TABLE {$table_mailbox} DROP COLUMN domain_old;\n COMMIT;"); if (!_pgsql_object_exists('mailbox_username_active')) { db_query_parsed('CREATE INDEX mailbox_username_active ON mailbox(username,active)'); } $result = db_query_parsed("ALTER TABLE {$table_vacation} ALTER COLUMN body SET DEFAULT ''"); if (_pgsql_field_exists($table_vacation, 'cache')) { $result = db_query_parsed("ALTER TABLE {$table_vacation} DROP COLUMN cache"); } $result = db_query_parsed("\n BEGIN;\n ALTER TABLE {$table_vacation} RENAME COLUMN domain to domain_old;\n ALTER TABLE {$table_vacation} ADD COLUMN domain varchar(255) REFERENCES domain;\n UPDATE {$table_vacation} SET domain = domain_old;\n ALTER TABLE {$table_vacation} DROP COLUMN domain_old;\n COMMIT;\n "); if (!_pgsql_object_exists('vacation_email_active')) { $result = db_query_parsed("CREATE INDEX vacation_email_active ON vacation(email,active)"); } if (!_pgsql_object_exists('vacation_notification')) { $result = db_query_parsed("\n CREATE TABLE vacation_notification (\n on_vacation character varying(255) NOT NULL REFERENCES vacation(email) ON DELETE CASCADE,\n notified character varying(255) NOT NULL,\n notified_at timestamp with time zone NOT NULL DEFAULT now(),\n CONSTRAINT vacation_notification_pkey primary key(on_vacation,notified));"); } }