Use views and rules to work around the char(15)::timestamp problem.
authorGreg Sabino Mullane <greg@users.mediawiki.org>
Mon, 17 Jul 2006 01:17:07 +0000 (01:17 +0000)
committerGreg Sabino Mullane <greg@users.mediawiki.org>
Mon, 17 Jul 2006 01:17:07 +0000 (01:17 +0000)
Should be easy to change when/if true timestamps are used in the code.

maintenance/postgres/tables.sql

index 2d7b726..5a75f39 100644 (file)
@@ -112,7 +112,7 @@ CREATE TABLE "text" (
 );
 
 
-CREATE TABLE archive (
+CREATE TABLE archive2 (
   ar_namespace   SMALLINT     NOT NULL,
   ar_title       TEXT         NOT NULL,
   ar_text        TEXT,
@@ -125,7 +125,22 @@ CREATE TABLE archive (
   ar_rev_id      INTEGER,
   ar_text_id     INTEGER
 );
-CREATE INDEX archive_name_title_timestamp ON archive (ar_namespace,ar_title,ar_timestamp);
+CREATE INDEX archive_name_title_timestamp ON archive2 (ar_namespace,ar_title,ar_timestamp);
+
+-- This is the easiest way to work around the char(15) timestamp hack without modifying PHP code
+CREATE VIEW archive AS 
+SELECT 
+  ar_namespace, ar_title, ar_text, ar_comment, ar_user, ar_user_text, 
+  ar_minor_edit, ar_flags, ar_rev_id, ar_text_id,
+       TO_CHAR(ar_timestamp, 'YYYYMMDDHH24MISS') AS ar_timestamp
+FROM archive2;
+
+CREATE RULE archive_insert AS ON INSERT TO archive
+DO INSTEAD INSERT INTO archive2 VALUES (
+  NEW.ar_namespace, NEW.ar_title, NEW.ar_text, NEW.ar_comment, NEW.ar_user, NEW.ar_user_text, 
+  TO_DATE(NEW.ar_timestamp, 'YYYYMMDDHH24MISS'),
+  NEW.ar_minor_edit, NEW.ar_flags, NEW.ar_rev_id, NEW.ar_text_id
+);
 
 
 CREATE TABLE pagelinks (