Example #1
0
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");
    }
}
Example #2
0
/**
 * 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));");
    }
}