Added features:
[mir.git] / dbscripts / updates / update20031125.sql
diff --git a/dbscripts/updates/update20031125.sql b/dbscripts/updates/update20031125.sql
new file mode 100755 (executable)
index 0000000..c5e2f4b
--- /dev/null
@@ -0,0 +1,550 @@
+-- update script 2003-11-25 by Zapata
+-- * Removal of media (uploaded_media and content are now independently)
+-- * Clean up of content
+-- * Added a field for content-locking
+-- * Added a keywords field for content
+-- This script will terminate with an error the second time it's run,
+--   so running this script when it isn't needed is prevented from doing do any harm.
+
+DROP INDEX idx_content_webdb_create;
+DROP INDEX idx_othermedia_is_published_produced;
+DROP INDEX idx_othermedia_id;
+DROP INDEX idx_video_id;
+
+BEGIN TRANSACTION;
+
+----------------------
+-- CONTENT changes
+----------------------
+
+ALTER TABLE "content" RENAME TO "content_old";
+
+DROP INDEX "content_checksum_index";
+DROP INDEX "idx_content_to_article_type";
+DROP INDEX "idx_content_is_produced";
+DROP INDEX "idx_content_is_published__to_ar";
+DROP INDEX "idx_content_is_published__id";
+DROP INDEX "idx_content_is_pub__to_art__to_";
+DROP INDEX "idx_content_id";
+DROP INDEX "idx_content_is_published";
+
+CREATE TABLE "content" (
+       "id" integer DEFAULT nextval('media_id_seq'::text) NOT NULL,
+       "title" character varying(255),
+       "subtitle" character varying(255),
+       "edittitle" character varying(255),
+       "date" character(8) NOT NULL,
+       "creator" character varying(80),
+       "creator_main_url" character varying(255),
+       "creator_email" character varying(80),
+       "creator_address" character varying(80),
+       "creator_phone" character varying(80),
+       "description" text,
+       "comment" text,
+       "source" character varying(255),
+       "is_published" boolean DEFAULT '0' NOT NULL,
+       "is_produced" boolean DEFAULT '0' NOT NULL,
+       "to_publisher" integer NOT NULL,
+       "to_language" integer DEFAULT '0',
+       "to_rights" integer DEFAULT '0',
+       "webdb_create" timestamp with time zone NOT NULL,
+       "webdb_lastchange" timestamp with time zone,
+       "content_data" text,
+       "is_html" boolean DEFAULT '0' NOT NULL,
+       "to_article_type" smallint DEFAULT '0' NOT NULL,
+       "to_content" integer,
+       "keywords" text,
+       "to_locking_user" integer,
+  Constraint "content_pkey" Primary Key ("id")
+);
+
+
+CREATE        INDEX "idx_content_to_article_type" on "content" using btree ( "to_article_type" "int2_ops" );
+CREATE        INDEX "idx_content_is_produced" on "content" using btree ( "is_produced" "bool_ops" );
+CREATE        INDEX "idx_content_is_published__to_ar" on "content" using btree ( "is_published" "bool_ops", "to_article_type" "int2_ops" );
+CREATE        INDEX "idx_content_is_published__id" on "content" using btree ( "is_published" "bool_ops", "id" "int4_ops" );
+CREATE        INDEX "idx_content_is_pub__to_art__to_" on "content" using btree ( "is_published" "bool_ops", "to_article_type" "int2_ops", "id" "int4_ops" );
+CREATE UNIQUE INDEX "idx_content_id" on "content" using btree ( "id" "int4_ops" );
+CREATE        INDEX "idx_content_is_published" on "content" using btree ( "is_published" "bool_ops" );
+  
+INSERT INTO "content" (
+       "id",
+       "title",
+       "subtitle",
+       "edittitle",
+       "date",
+       "creator",
+       "creator_main_url",
+       "creator_email",
+       "creator_address",
+       "creator_phone",
+       "description",
+       "comment",
+       "source",
+       "is_published",
+       "is_produced",
+       "to_publisher",
+       "to_language",
+       "to_rights",
+       "webdb_create",
+       "webdb_lastchange",
+       "content_data",
+       "is_html",
+       "to_article_type",
+       "to_content",
+       "keywords")
+select
+       "id",
+       "title",
+       "subtitle",
+       "edittitle",
+       "date",
+       "creator",
+       "creator_main_url",
+       "creator_email",
+       "creator_address",
+       "creator_phone",
+       "description",
+       "comment",
+       "source",
+       "is_published",
+       "is_produced",
+       "to_publisher",
+       "to_language",
+       "to_rights",
+       "webdb_create",
+       "webdb_lastchange",
+       "content_data",
+       "is_html",
+       "to_article_type",
+       "to_content",
+       ''
+from content_old;      
+
+UPDATE  pg_class
+SET
+  relowner = (SELECT relowner FROM pg_class WHERE relname='content_old'),
+  relacl =   (SELECT relacl FROM pg_class WHERE relname='content_old')
+WHERE 
+  relname = 'content';
+  
+DROP table content_old;
+
+--
+-- uploaded_media
+--
+
+ALTER TABLE "uploaded_media" RENAME TO "uploaded_media_old";
+DROP INDEX "idx_uploaded_media_id";
+DROP INDEX "idx_uploaded_media_is_published";
+
+CREATE TABLE "uploaded_media" (
+       "id" integer DEFAULT nextval('media_id_seq'::text) NOT NULL,
+       "title" character varying(255),
+       "subtitle" character varying(255),
+       "edittitle" character varying(255),
+       "date" character(8) NOT NULL,
+       "creator" character varying(80),
+       "creator_main_url" character varying(255),
+       "creator_email" character varying(80),
+       "creator_address" character varying(80),
+       "creator_phone" character varying(20),
+       "description" text,
+       "comment" text,
+       "source" character varying(255),
+       "publish_server" character varying(255),
+       "publish_path" character varying(255),
+       "is_published" boolean DEFAULT '0' NOT NULL,
+       "is_produced" boolean DEFAULT '0' NOT NULL,
+       "to_media_folder" integer DEFAULT '0' NOT NULL,
+       "to_media_type" smallint DEFAULT '0' NOT NULL,
+       "to_publisher" integer NOT NULL,
+       "to_language" integer DEFAULT '0',
+       "to_rights" integer DEFAULT '0',
+       "webdb_create" timestamp with time zone NOT NULL,
+       "webdb_lastchange" timestamp with time zone,
+       "icon_is_produced" boolean DEFAULT '0' NOT NULL,
+       "icon_path" character varying(255),
+       "size" integer,
+  Constraint "uploaded_media_pkey" Primary Key ("id")
+);
+
+CREATE UNIQUE INDEX "idx_uploaded_media_id" on "uploaded_media" using btree ( "id" "int4_ops" );
+CREATE UNIQUE INDEX "idx_uploaded_media_is_published" on "uploaded_media" using btree ( "id" "int4_ops", "is_published" "bool_ops" );
+
+--
+-- images
+--
+
+ALTER TABLE "images" RENAME TO "images_old";
+DROP INDEX "idx_images_is_published__icon_i";
+DROP INDEX "idx_images_id";
+
+
+CREATE TABLE "images" (
+       "image_data" oid,
+       "icon_data" oid,
+       "year" character varying(40),
+       "img_width" smallint,
+       "img_height" smallint,
+       "to_img_format" smallint DEFAULT '0' NOT NULL,
+       "to_img_layout" smallint DEFAULT '0' NOT NULL,
+       "to_img_type" smallint DEFAULT '0' NOT NULL,
+       "to_img_color" smallint DEFAULT '0' NOT NULL,
+       "icon_width" smallint,
+       "icon_height" smallint
+)
+INHERITS ("uploaded_media");
+
+CREATE        INDEX "idx_images_is_published" on "images" using btree ( "is_published" "bool_ops", "icon_is_produced" "bool_ops" );
+CREATE UNIQUE INDEX "idx_images_id" on "images" using btree ( "id" "int4_ops" );
+
+INSERT INTO images(
+       "id",
+       "title",
+       "subtitle",
+       "edittitle",
+       "date",
+       "creator",
+       "creator_main_url",
+       "creator_email",
+       "creator_address",
+       "creator_phone",
+       "description",
+       "comment",
+       "source",
+       "publish_server",
+       "publish_path",
+       "is_published",
+       "is_produced",
+       "to_media_folder",
+       "to_media_type",
+       "to_publisher",
+       "to_language",
+       "to_rights",
+       "webdb_create",
+       "webdb_lastchange",
+       "icon_is_produced",
+       "icon_path",
+       "size",
+       "image_data",
+       "icon_data",
+       "year",
+       "img_width",
+       "img_height",
+       "to_img_format",
+       "to_img_layout",
+       "to_img_type",
+       "to_img_color",
+       "icon_width",
+       "icon_height"
+)
+SELECT
+       "id",
+       "title",
+       "subtitle",
+       "edittitle",
+       "date",
+       "creator",
+       "creator_main_url",
+       "creator_email",
+       "creator_address",
+       "creator_phone",
+       "description",
+       "comment",
+       "source",
+       "publish_server",
+       "publish_path",
+       "is_published",
+       "is_produced",
+       "to_media_folder",
+       "to_media_type",
+       "to_publisher",
+       "to_language",
+       "to_rights",
+       "webdb_create",
+       "webdb_lastchange",
+       "icon_is_produced",
+       "icon_path",
+       "size",
+       "image_data",
+       "icon_data",
+       "year",
+       "img_width",
+       "img_height",
+       "to_img_format",
+       "to_img_layout",
+       "to_img_type",
+       "to_img_color",
+       "icon_width",
+       "icon_height"
+FROM images_old;
+
+UPDATE  pg_class
+SET
+  relowner = (SELECT relowner FROM pg_class WHERE relname='images_old'),
+  relacl =   (SELECT relacl FROM pg_class WHERE relname='images_old')
+WHERE 
+  relname = 'images';
+  
+DROP table images_old;
+
+--
+-- audio
+--
+
+ALTER TABLE "audio" RENAME TO "audio_old";
+DROP INDEX "idx_audio_is_published_produced";
+DROP INDEX "idx_audio_id";
+
+CREATE TABLE "audio" (
+  "kbits" smallint
+)
+INHERITS ("uploaded_media");
+
+CREATE        INDEX "idx_audio_is_published_produced" on "audio" using btree ( "is_published" "bool_ops", "is_produced" "bool_ops" );
+CREATE UNIQUE INDEX "idx_audio_id" on "audio" using btree ( "id" "int4_ops" );
+
+INSERT INTO audio(
+       "id",
+       "title",
+       "subtitle",
+       "edittitle",
+       "date",
+       "creator",
+       "creator_main_url",
+       "creator_email",
+       "creator_address",
+       "creator_phone",
+       "description",
+       "comment",
+       "source",
+       "publish_server",
+       "publish_path",
+       "is_published",
+       "is_produced",
+       "to_media_folder",
+       "to_media_type",
+       "to_publisher",
+       "to_language",
+       "to_rights",
+       "webdb_create",
+       "webdb_lastchange",
+       "icon_is_produced",
+       "icon_path",
+       "size",
+  "kbits"
+)
+SELECT
+       "id",
+       "title",
+       "subtitle",
+       "edittitle",
+       "date",
+       "creator",
+       "creator_main_url",
+       "creator_email",
+       "creator_address",
+       "creator_phone",
+       "description",
+       "comment",
+       "source",
+       "publish_server",
+       "publish_path",
+       "is_published",
+       "is_produced",
+       "to_media_folder",
+       "to_media_type",
+       "to_publisher",
+       "to_language",
+       "to_rights",
+       "webdb_create",
+       "webdb_lastchange",
+       "icon_is_produced",
+       "icon_path",
+       "size",
+       "kbits"
+FROM audio_old;
+
+UPDATE  pg_class
+SET
+  relowner = (SELECT relowner FROM pg_class WHERE relname='audio_old'),
+  relacl =   (SELECT relacl FROM pg_class WHERE relname='audio_old')
+WHERE 
+  relname = 'audio';
+  
+DROP table audio_old;
+
+--
+-- video
+--
+
+DROP INDEX "idx_video_is_published_produced";
+ALTER TABLE "video" RENAME TO "video_old";
+
+CREATE TABLE "video" (
+)
+INHERITS ("uploaded_media");
+
+CREATE        INDEX "idx_video_is_published_produced" on "video" using btree ( "is_published" "bool_ops", "is_produced" "bool_ops" );
+
+INSERT INTO video(
+       "id",
+       "title",
+       "subtitle",
+       "edittitle",
+       "date",
+       "creator",
+       "creator_main_url",
+       "creator_email",
+       "creator_address",
+       "creator_phone",
+       "description",
+       "comment",
+       "source",
+       "publish_server",
+       "publish_path",
+       "is_published",
+       "is_produced",
+       "to_media_folder",
+       "to_media_type",
+       "to_publisher",
+       "to_language",
+       "to_rights",
+       "webdb_create",
+       "webdb_lastchange",
+       "icon_is_produced",
+       "icon_path",
+       "size"
+)
+SELECT
+       "id",
+       "title",
+       "subtitle",
+       "edittitle",
+       "date",
+       "creator",
+       "creator_main_url",
+       "creator_email",
+       "creator_address",
+       "creator_phone",
+       "description",
+       "comment",
+       "source",
+       "publish_server",
+       "publish_path",
+       "is_published",
+       "is_produced",
+       "to_media_folder",
+       "to_media_type",
+       "to_publisher",
+       "to_language",
+       "to_rights",
+       "webdb_create",
+       "webdb_lastchange",
+       "icon_is_produced",
+       "icon_path",
+       "size"
+FROM video_old;
+
+UPDATE  pg_class
+SET
+  relowner = (SELECT relowner FROM pg_class WHERE relname='video_old'),
+  relacl =   (SELECT relacl FROM pg_class WHERE relname='video_old')
+WHERE 
+  relname = 'video';
+  
+DROP table video_old;
+
+
+--
+-- other_media
+--
+
+ALTER TABLE "other_media" RENAME TO "other_media_old";
+
+CREATE TABLE "other_media" (
+)
+INHERITS ("uploaded_media");
+
+INSERT INTO other_media(
+       "id",
+       "title",
+       "subtitle",
+       "edittitle",
+       "date",
+       "creator",
+       "creator_main_url",
+       "creator_email",
+       "creator_address",
+       "creator_phone",
+       "description",
+       "comment",
+       "source",
+       "publish_server",
+       "publish_path",
+       "is_published",
+       "is_produced",
+       "to_media_folder",
+       "to_media_type",
+       "to_publisher",
+       "to_language",
+       "to_rights",
+       "webdb_create",
+       "webdb_lastchange",
+       "icon_is_produced",
+       "icon_path",
+       "size"
+)
+SELECT
+       "id",
+       "title",
+       "subtitle",
+       "edittitle",
+       "date",
+       "creator",
+       "creator_main_url",
+       "creator_email",
+       "creator_address",
+       "creator_phone",
+       "description",
+       "comment",
+       "source",
+       "publish_server",
+       "publish_path",
+       "is_published",
+       "is_produced",
+       "to_media_folder",
+       "to_media_type",
+       "to_publisher",
+       "to_language",
+       "to_rights",
+       "webdb_create",
+       "webdb_lastchange",
+       "icon_is_produced",
+       "icon_path",
+       "size"
+FROM other_media_old;
+
+UPDATE  pg_class
+SET
+  relowner = (SELECT relowner FROM pg_class WHERE relname='other_media_old'),
+  relacl =   (SELECT relacl FROM pg_class WHERE relname='other_media_old')
+WHERE 
+  relname = 'other_media';
+  
+DROP table other_media_old;
+
+DROP table uploaded_media_old;
+DROP table media;
+  
+-- that's it!
+  
+COMMIT TRANSACTION;
+
+CREATE INDEX idx_content_webdb_create on content(webdb_create);
+CREATE        INDEX "idx_othermedia_is_published_produced" on "other_media" using btree ( "is_published" "bool_ops", "is_produced" "bool_ops" );
+CREATE UNIQUE INDEX "idx_othermedia_id" on "other_media" using btree ( "id" "int4_ops" );
+CREATE UNIQUE INDEX "idx_video_id" on "video" using btree ( "id" "int4_ops" );
+
+