'natural join' and 'join ... using' giving different results - Mailing list pgsql-bugs
From | Bruno Wolff III |
---|---|
Subject | 'natural join' and 'join ... using' giving different results |
Date | |
Msg-id | 20020109172928.GA21771@wolff.to Whole thread Raw |
Responses |
Re: 'natural join' and 'join ... using' giving different results
Re: 'natural join' and 'join ... using' giving different |
List | pgsql-bugs |
I am seeing different results when using 'natural join' as opposed to 'join ... using' on what I think the equivalent columns should be. The 'join ... using' version of the query gives the expected answer. I have tried this on 7.1.3 (built locally) and 7.2b4 with a patch to how foreign keys are checked. The machines where both running Redhat linux 6.1 with a 2.2.16 kernel. Below is a sample psql session that I think illustrates the problem. Script started on Wed Jan 9 11:17:06 2002 [bruno@wolff bruno]$ psql Welcome to psql, the PostgreSQL interactive terminal. Type: \copyright for distribution terms \h for help with SQL commands \? for help on internal slash commands \g or terminate with semicolon to execute query \q to quit area=> \d games Table "games" Attribute | Type | Modifier -----------+--------------------------+------------------------ gameid | text | not null title | text | not null touched | timestamp with time zone | not null default 'now' Indices: games_pkey, title_idx Constraints: (gameid ~ '^[A-Z0-9]+$'::text) (title ~ '^[!-~]+( [!-~]+)*$'::text) area=> \d crate Table "crate" Attribute | Type | Modifier -----------+--------------------------+------------------------ areaid | text | not null gameid | text | not null rate | integer | not null default 5000 frq | integer | not null default 0 opp | integer | not null default 0 rmp | integer | not null default 0 trn | integer | not null default 0 touched | timestamp with time zone | not null default 'now' Index: crate_pkey Constraints: (rate >= 0) (frq >= 0) (opp >= 0) (rmp >= 0) (trn >= 0) area=> select * from crate natural join games where areaid = '53217.01'; gameid | touched | areaid | rate | frq | opp | rmp | trn | title --------+------------------------+----------+------+-----+-----+-----+-----+----------- WRS | 2000-06-01 00:00:00-05 | 53217.01 | 5000 | 0 | 0 | 0 | 0 | Wrasslin' (1 row) area=> select * from crate join games using (gameid) where areaid = '53217.01'; gameid | areaid | rate | frq | opp | rmp | trn | touched | title | touched --------+----------+------+-----+-----+-----+-----+------------------------+-------------------------+------------------------ GR | 53217.01 | 4969 | 2 | 49 | 0 | 2 | 1999-08-02 00:00:00-05 | Greed | 2001-11-17 00:00:00-06 GXY | 53217.01 | 4975 | 1 | 4 | 0 | 1 | 2001-01-13 00:00:00-06 | Galaxy | 2001-09-09 00:00:00-05 MRA | 53217.01 | 4966 | 1 | 3 | 0 | 1 | 1999-08-02 00:00:00-05 | Monsters Ravage America | 2000-06-01 00:00:00-05 RBN | 53217.01 | 5143 | 4 | 15 | 0 | 2 | 1993-08-02 00:00:00-05 | Rail Baron | 2001-08-10 00:00:00-05 SLS | 53217.01 | 4986 | 1 | 7 | 0 | 1 | 1999-08-02 00:00:00-05 | Slapshot | 2000-06-01 00:00:00-05 TTA | 53217.01 | 5103 | 1 | 4 | 0 | 1 | 1999-08-02 00:00:00-05 | Titan: The Arena | 2001-09-09 00:00:00-05 TTN | 53217.01 | 5554 | 28 | 38 | 0 | 11 | 2001-07-01 00:00:00-05 | Titan | 2001-09-21 00:00:00-05 VIP | 53217.01 | 5300 | 15 | 15 | 0 | 3 | 1999-03-07 00:00:00-06 | Victory In The Pacific | 2002-01-03 00:00:00-06 WRS | 53217.01 | 5000 | 0 | 0 | 0 | 0 | 2000-06-01 00:00:00-05 | Wrasslin' | 2000-06-01 00:00:00-05 (9 rows) area=> \q [bruno@wolff bruno]$ exit exit Script done on Wed Jan 9 11:18:48 2002
pgsql-bugs by date: