diff options
author | Yorhel <git@yorhel.nl> | 2010-02-02 18:33:51 +0100 |
---|---|---|
committer | Yorhel <git@yorhel.nl> | 2010-02-02 18:33:51 +0100 |
commit | 1c0c4477f76dee105274aab7efe58b4381533b80 (patch) | |
tree | 39becf82b0c38ace8012697c1c7021350c56f437 /util/sql | |
parent | 3dc88eb0b242a1e26f7e6884d20fa63d30f5aab3 (diff) |
SQL: Converted language columns to an ENUM type
And changed vn.c_languages to an array type while I was at it. This
required some changes in the Perl code, and I found a bug in DBD::Pg
while I was at it:
https://rt.cpan.org/Ticket/Display.html?id=54224
Luckily, there's an easy workaround for that.
Diffstat (limited to 'util/sql')
-rw-r--r-- | util/sql/all.sql | 1 | ||||
-rw-r--r-- | util/sql/func.sql | 4 | ||||
-rw-r--r-- | util/sql/schema.sql | 6 |
3 files changed, 6 insertions, 5 deletions
diff --git a/util/sql/all.sql b/util/sql/all.sql index e4f66d91..c012eba2 100644 --- a/util/sql/all.sql +++ b/util/sql/all.sql @@ -9,6 +9,7 @@ CREATE LANGUAGE plpgsql; CREATE TYPE anime_type AS ENUM ('tv', 'ova', 'mov', 'oth', 'web', 'spe', 'mv'); CREATE TYPE dbentry_type AS ENUM ('v', 'r', 'p'); CREATE TYPE edit_rettype AS (iid integer, cid integer, rev integer); +CREATE TYPE language AS ENUM('cs', 'da', 'de', 'en', 'es', 'fi', 'fr', 'hu', 'it', 'ja', 'ko', 'nl', 'no', 'pl', 'pt', 'ru', 'sk', 'sv', 'tr', 'vi', 'zh'); CREATE TYPE medium AS ENUM ('cd', 'dvd', 'gdr', 'blr', 'flp', 'mrt', 'mem', 'umd', 'nod', 'in', 'otc'); CREATE TYPE notification_ntype AS ENUM ('pm'); CREATE TYPE notification_ltype AS ENUM ('t'); diff --git a/util/sql/func.sql b/util/sql/func.sql index a0fe2c2f..2c5c12b2 100644 --- a/util/sql/func.sql +++ b/util/sql/func.sql @@ -26,7 +26,7 @@ CREATE OR REPLACE FUNCTION update_vncache(integer) RETURNS void AS $$ AND rr1.released <> 0 GROUP BY rv1.vid ), 0), - c_languages = COALESCE(ARRAY_TO_STRING(ARRAY( + c_languages = ARRAY( SELECT rl2.lang FROM releases_rev rr2 JOIN releases_lang rl2 ON rl2.rid = rr2.id @@ -38,7 +38,7 @@ CREATE OR REPLACE FUNCTION update_vncache(integer) RETURNS void AS $$ AND r2.hidden = FALSE GROUP BY rl2.lang ORDER BY rl2.lang - ), '/'), ''), + ), c_platforms = COALESCE(ARRAY_TO_STRING(ARRAY( SELECT rp3.platform FROM releases_platforms rp3 diff --git a/util/sql/schema.sql b/util/sql/schema.sql index c496e01d..d5766073 100644 --- a/util/sql/schema.sql +++ b/util/sql/schema.sql @@ -64,7 +64,7 @@ CREATE TABLE producers_rev ( name varchar(200) NOT NULL DEFAULT '', original varchar(200) NOT NULL DEFAULT '', website varchar(250) NOT NULL DEFAULT '', - lang varchar NOT NULL DEFAULT 'ja', + lang language NOT NULL DEFAULT 'ja', "desc" text NOT NULL DEFAULT '', alias varchar(500) NOT NULL DEFAULT '', l_wp varchar(150) @@ -88,7 +88,7 @@ CREATE TABLE releases ( -- releases_lang CREATE TABLE releases_lang ( rid integer NOT NULL, - lang varchar NOT NULL, + lang language NOT NULL, PRIMARY KEY(rid, lang) ); @@ -286,7 +286,7 @@ CREATE TABLE vn ( hidden boolean NOT NULL DEFAULT FALSE, rgraph integer, c_released integer NOT NULL DEFAULT 0, - c_languages varchar(32) NOT NULL DEFAULT '', + c_languages language[] NOT NULL DEFAULT '{}', c_platforms varchar(32) NOT NULL DEFAULT '', c_popularity real, c_rating real, |