Problem with BETWEEN and a view. - Mailing list pgsql-bugs

From Andrew Snow
Subject Problem with BETWEEN and a view.
Date
Msg-id Pine.BSF.4.21.0011151630420.38886-100000@jander.fl.net.au
Whole thread Raw
Responses Re: Problem with BETWEEN and a view.
Re: Problem with BETWEEN and a view.
List pgsql-bugs
I just installed v7.0.3 release on a FreeBSD 4.x system.  (Problem still happened in 7.0.2 too).

This is the problem I noticed:

# select * from mailredirs;
 username |    destination     |         start          |          stop          |    reason
----------+--------------------+------------------------+------------------------+---------------
 als      | andrew@modulus.org | 2000-10-31 17:26:52+11 | 2000-11-25 16:29:01+11 | Just because.
(1 row)

# select * from mailredirs where start < CURRENT_TIMESTAMP and stop > CURRENT_TIMESTAMP;
ERROR:  Bad timestamp external representation 'Just because.'

Why is it even looking at the 'reason' field??



Unfortunately it gets more complicated here, as I am going to dump you with a load of table
and view definitions.

CREATE VIEW MailRedirs AS
 SELECT u.Name AS Username, v1.Value AS Destination,     v2.Value::timestamp AS Start,
                            v3.Value::timestamp AS Stop, v4.Value AS Reason
 FROM Values v1, Values v2, Values v3, Values v4, Users u
 WHERE v1.AttributeID = get_attributeid('MailRedir', 'Dest')
   AND v2.AttributeID = get_attributeid('MailRedir','Start')
   AND v3.AttributeID = get_attributeid('MailRedir','End')
   AND v4.AttributeID = get_attributeid('MailRedir','Reason')
   AND u.ID=v1.ThingID AND u.ID=v2.ThingID AND u.ID=v3.ThingID AND u.ID=v4.ThingID;

The table "Values" joins an Attribute to a Thing with a text value.  "Users" is a
view on "Things", pulling out only "Things" of type User...

CREATE TABLE Values (
  ID           serial PRIMARY KEY,
  AttributeID  int4 NOT NULL REFERENCES Attributes,
  ThingID      int4 NOT NULL REFERENCES Things ON DELETE CASCADE,
  Value        text NOT NULL
);
CREATE TABLE Attributes (
  ID       serial PRIMARY KEY,
  Name     text NOT NULL,
  Subname  text NOT NULL,
  Format   text NOT NULL,
  UNIQUE(Name, Subname)
);
CREATE TABLE Things (
  ID        serial PRIMARY KEY,
  Name      text NOT NULL,
  TypeID    int4 NOT NULL REFERENCES Types,
  ParentID  int4 REFERENCES Things DEFAULT NULL
);
CREATE VIEW Users AS
 SELECT th.ID, th.Name, th2.Name AS ParentName, th2.ID AS ParentID
    FROM Things th, Things th2
    WHERE th2.ID=th.ParentID AND Types.Name='User' AND th.TypeID=Types.ID;
CREATE FUNCTION get_attributeid(text, text) returns int4 AS 'SELECT ID FROM Attributes WHERE (Name,Subname)=($1,$2)'
 LANGUAGE 'sql' WITH (iscachable);

pgsql-bugs by date:

Previous
From: pgsql-bugs@postgresql.org
Date:
Subject: Fail to restore index tables from pg_dumpall
Next
From: Andrew Snow
Date:
Subject: Re: Problem with BETWEEN and a view.