Обсуждение: BUG #2598: Columns named R are not accessible - although R is not a keyword
BUG #2598: Columns named R are not accessible - although R is not a keyword
От
"Andreas Langegger"
Дата:
The following bug has been logged online: Bug reference: 2598 Logged by: Andreas Langegger Email address: al@jku.at PostgreSQL version: 8.1 Operating system: Gentoo Linux 3.3.6, Kernel 2.6.16 Description: Columns named R are not accessible - although R is not a keyword Details: It seems that the column name "R" or "r" is reserved. If I want to insert tuples I get the error message: ERROR: column "r" of relation "xyz" does not exist And if I alter the column name to "a" it works. Again, renaming to "R" or "r", same error. But it's not announced to be a name conflict / reserved keyword... Regards, Andy
"Andreas Langegger" <al@jku.at> writes:
> It seems that the column name "R" or "r" is reserved.
Hardly.
> If I want to insert tuples I get the error message:
> ERROR: column "r" of relation "xyz" does not exist
Worksforme:
regression=# create table xyz(r int);
CREATE TABLE
regression=# insert into xyz(r) values(42);
INSERT 0 1
Perhaps you could provide a self-contained test case?
regards, tom lane
Andreas Langegger <al@jku.at> writes: > Well, I also tried your simple regression test and it worked. The more > I'm wondering why this does not: > CREATE TABLE sunspots > ... > "R" int2, "R" with double quotes represents capital R, but when you write R without quotes in a query, it's implicitly downcased. See http://www.postgresql.org/docs/8.1/static/sql-syntax.html#SQL-SYNTAX-IDENTIFIERS If you spell it like that in the table definition then you'll need to use quotes every time you refer to the column, too. regards, tom lane
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
Well, I also tried your simple regression test and it worked. The more
I'm wondering why this does not:
CREATE TABLE sunspots
(
sunspots_key int4 NOT NULL,
- -- DEFAULT nextval('sunspot_seq'::regclass)
date date NOT NULL,
"time" time NOT NULL,
groups int2,
spots int2,
seeing int2,
ruhe int2,
tinygrps int2,
remarks varchar(85),
"R" int2,
groups_s int2,
spots_s int2,
scientist_id int4
- -- ,CONSTRAINT sunspot_pkey PRIMARY KEY (sunspots_key),
- -- CONSTRAINT fk_sunspot_scientist FOREIGN KEY (scientist_id)
- -- REFERENCES scientist (scientist_key) ON UPDATE NO ACTION ON
- -- DELETE NO ACTION,
- -- CONSTRAINT sunspot_seeing_fkey FOREIGN KEY (seeing) REFERENCES
- -- seeing_quality (seeing10) ON UPDATE NO ACTION ON DELETE NO ACTION
)
WITHOUT OIDS;
insert into sunspots (sunspots_key, date, time, remarks, R) values
(99999, '2006-08-30', '12:00:00', 'no comments', 30);
causes:
ERROR: column "r" of relation "sunspots" does not exist
regards,
Andy
Tom Lane wrote:
> "Andreas Langegger" <al@jku.at> writes:
>> It seems that the column name "R" or "r" is reserved.
>
> Hardly.
>
>> If I want to insert tuples I get the error message:
>
>> ERROR: column "r" of relation "xyz" does not exist
>
> Worksforme:
>
> regression=# create table xyz(r int);
> CREATE TABLE
> regression=# insert into xyz(r) values(42);
> INSERT 0 1
>
> Perhaps you could provide a self-contained test case?
>
> regards, tom lane
- --
- ----------------------------------------------------------------------
Dipl.-Ing.(FH) Andreas Langegger
Institute of Applied Knowledge Processing
Johannes Kepler University Linz
A-4040 Linz, Altenberger Straße 69
> http://www.faw.at
> http://www.langegger.at
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.2.2 (GNU/Linux)
iD8DBQFE9bBQKk9SuaNc5+IRAt0IAKCo1h9uGjqChF2LE/4ab3U9/gnOkACgycdZ
3TRNTKNtsfI1B5iB5Lym5hA=
=ahUA
-----END PGP SIGNATURE-----