| |
" ON DELETE RESTRICT ON UPDATE RESTRICT,"
|
| |
"UNIQUE(package_id, license_id)"
|
| |
");"
|
| - |
"CREATE TABLE options ("
|
| - |
"package_id INTEGER REFERENCES packages(id)"
|
| - |
" ON DELETE CASCADE ON UPDATE CASCADE,"
|
| - |
"option TEXT,"
|
| - |
"value TEXT,"
|
| - |
"UNIQUE (package_id, option)"
|
| + |
"CREATE TABLE option ("
|
| + |
"option_id INTEGER PRIMARY KEY,"
|
| + |
"option TEXT NOT NULL UNIQUE"
|
| + |
");"
|
| + |
"CREATE TABLE option_desc ("
|
| + |
"option_desc_id INTEGER PRIMARY KEY,"
|
| + |
"option_desc TEXT NOT NULL UNIQUE"
|
| + |
");"
|
| + |
"CREATE TABLE %Q.pkg_option ("
|
| + |
"package_id INTEGER NOT NULL REFERENCES packages(id) "
|
| + |
"ON DELETE CASCADE ON UPDATE CASCADE,"
|
| + |
"option_id INTEGER NOT NULL REFERENCES option(option_id) "
|
| + |
"ON DELETE RESTRICT ON UPDATE CASCADE,"
|
| + |
"value TEXT NOT NULL,"
|
| + |
"PRIMARY KEY(package_id, option_id)"
|
| |
");"
|
| + |
"CREATE TABLE pkg_option_desc ("
|
| + |
"package_id INTEGER NOT NULL REFERENCES packages(id) "
|
| + |
"ON DELETE CASCADE ON UPDATE CASCADE,"
|
| + |
"option_id INTEGER NOT NULL REFERENCES option(option_id) "
|
| + |
"ON DELETE RESTRICT ON UPDATE CASCADE,"
|
| + |
"option_desc_id INTEGER NOT NULL "
|
| + |
"REFERENCES option_desc(option_desc_id) "
|
| + |
"ON DELETE RESTRICT ON UPDATE CASCADE,"
|
| + |
"PRIMARY KEY(package_id, option_id)"
|
| + |
");"
|
| + |
"CREATE TABLE pkg_option_default ("
|
| + |
"package_id INTEGER NOT NULL REFERENCES packages(id) "
|
| + |
"ON DELETE CASCADE ON UPDATE CASCADE,"
|
| + |
"option_id INTEGER NOT NULL REFERENCES option(option_id) "
|
| + |
"ON DELETE RESTRICT ON UPDATE CASCADE,"
|
| + |
"default_value TEXT NOT NULL,"
|
| + |
"PRIMARY KEY(package_id, option_id)"
|
| |
"CREATE TABLE shlibs ("
|
| |
"id INTEGER PRIMARY KEY,"
|
| |
"name TEXT NOT NULL UNIQUE "
|
| |
"DROP TABLE pkg_abstract;"
|
| |
"DROP TABLE abstract;"
|
| |
},
|
| + |
{2005,
|
| + |
2006,
|
| + |
"Add capability to track option descriptions and defaults",
|
| + |
"CREATE TABLE %Q.option ("
|
| + |
"option_id INTEGER PRIMARY KEY,"
|
| + |
"option TEXT NOT NULL UNIQUE"
|
| + |
");"
|
| + |
"CREATE TABLE %Q.option_desc ("
|
| + |
"option_desc_id INTEGER PRIMARY KEY,"
|
| + |
"option_desc TEXT NOT NULL UNIQUE"
|
| + |
");"
|
| + |
"CREATE TABLE %Q.pkg_option ("
|
| + |
"package_id INTEGER NOT NULL REFERENCES packages(id) "
|
| + |
"ON DELETE CASCADE ON UPDATE CASCADE,"
|
| + |
"option_id INTEGER NOT NULL REFERENCES option(option_id) "
|
| + |
"ON DELETE RESTRICT ON UPDATE CASCADE,"
|
| + |
"value TEXT NOT NULL,"
|
| + |
"PRIMARY KEY(package_id, option_id)"
|
| + |
");"
|
| + |
"CREATE TABLE %Q.pkg_option_desc ("
|
| + |
"package_id INTEGER NOT NULL REFERENCES packages(id) "
|
| + |
"ON DELETE CASCADE ON UPDATE CASCADE,"
|
| + |
"option_id INTEGER NOT NULL REFERENCES option(option_id) "
|
| + |
"ON DELETE RESTRICT ON UPDATE CASCADE,"
|
| + |
"option_desc_id INTEGER NOT NULL "
|
| + |
"REFERENCES option_desc(option_desc_id) "
|
| + |
"ON DELETE RESTRICT ON UPDATE CASCADE,"
|
| + |
"PRIMARY KEY(package_id, option_id)"
|
| + |
");"
|
| + |
"CREATE TABLE %Q.pkg_option_default ("
|
| + |
"package_id INTEGER NOT NULL REFERENCES packages(id) "
|
| + |
"ON DELETE CASCADE ON UPDATE CASCADE,"
|
| + |
"option_id INTEGER NOT NULL REFERENCES option(option_id) "
|
| + |
"ON DELETE RESTRICT ON UPDATE CASCADE,"
|
| + |
"default_value TEXT NOT NULL,"
|
| + |
"PRIMARY KEY(package_id, option_id)"
|
| + |
"INSERT INTO %Q.option (option) "
|
| + |
"SELECT DISTINCT option FROM %Q.options;"
|
| + |
"INSERT INTO %Q.pkg_option(package_id, option_id, value) "
|
| + |
"SELECT package_id, option_id, value "
|
| + |
"FROM %Q.options oo JOIN %Q.option o "
|
| + |
"ON (oo.option = o.option);"
|
| + |
"DROP TABLE %Q.options;",
|
| + |
},
|
| + |
|
| |
/* Mark the end of the array */
|
| |
{ -1, -1, NULL, NULL, }
|
| |
|
| |
/* How to downgrade a newer repo to match what the current system
|
| |
expects */
|
| |
static const struct repo_changes repo_downgrades[] = {
|
| + |
{2006,
|
| + |
2005,
|
| + |
"Revert addition of extra options related data",
|
| + |
"CREATE TABLE %Q.options ("
|
| + |
"package_id INTEGER REFERENCES packages(id) "
|
| + |
"ON DELETE CASCADE ON UPDATE CASCADE,"
|
| + |
"option TEXT,"
|
| + |
"value TEXT,"
|
| + |
"PRIMARY KEY(package_id,option)"
|
| + |
");"
|
| + |
"INSERT INTO %Q.options (package_id, option, value) "
|
| + |
"SELECT package_id, option, value "
|
| + |
"FROM %Q.pkg_option JOIN %Q.option USING(option_id);"
|
| + |
"DROP TABLE pkg_option;"
|
| + |
"DROP TABLE pkg_option_default;"
|
| + |
"DROP TABLE option;"
|
| + |
"DROP TABLE pkg_option_desc;"
|
| + |
"DROP TABLE option_desc;",
|
| + |
},
|
| |
{2005,
|
| |
2004,
|
| |
"Revert rename of 'abstract metadata' to 'annotations'",
|