Обсуждение: Time as keyword

Поиск
Список
Период
Сортировка

Time as keyword

От
Dwayne Miller
Дата:
Did time become a keyword in 7.2? 7.1.3 allowed it as a column name... 
7.2 rejects it.

Tks



Re: Time as keyword

От
Tom Lane
Дата:
Dwayne Miller <dwayne-miller@home.com> writes:
> Did time become a keyword in 7.2? 7.1.3 allowed it as a column name... 
> 7.2 rejects it.

It's always been a keyword, but it is "more reserved" than it used to
be.  See

http://developer.postgresql.org/docs/postgres/sql-keywords-appendix.html

However, according to that list TIME is still allowed as a column name,
and indeed I get:

regression=# create table foo (f1 time, time time);
CREATE

So I'm not sure what you did.
        regards, tom lane


Re: Time as keyword

От
Holger Krug
Дата:
On Thu, Jan 03, 2002 at 10:20:21PM -0500, Dwayne Miller wrote:
> Did time become a keyword in 7.2?

$ grep TIME src/backend/parser/keywords.c {"current_time", CURRENT_TIME},{"current_timestamp",
CURRENT_TIMESTAMP},{"time",TIME},{"timestamp", TIMESTAMP},
 
-- 
Holger Krug
hkrug@rationalizer.com


Re: Time as keyword

От
Thomas Lockhart
Дата:
> Did time become a keyword in 7.2? 7.1.3 allowed it as a column name...
> 7.2 rejects it.

Yes. We now support SQL99 time and timestamp precision, which require
that TIME(p) be a type specification. So there are parts of the grammar
which cannot easily fit "time" anymore.

You could/should use the SQL99 list of reserved words as a guide for
which keywords to *not* use, even though some of them are currently
accepted as, for example, column names. In the meantime, you can
double-quote the column name if you really need it to stay "time".
                 - Thomas


Re: Time as keyword

От
"Zeugswetter Andreas SB SD"
Дата:
> > Did time become a keyword in 7.2? 7.1.3 allowed it as a column name...
> > 7.2 rejects it.
> 
> Yes. We now support SQL99 time and timestamp precision, which require
> that TIME(p) be a type specification. So there are parts of the grammar
> which cannot easily fit "time" anymore.

Isn't the grammar explicit enough to distinguish a value (in this case function 
call) from a type name ? It seems a type name will only appear in very specific 
contexts.
Imho it would be nice if we could allow "select timestamp(xxx);",
and this has been the umpteenth request in this regard, and 7.2 is not even 
released yet.

Andreas


Re: Time as keyword

От
Tom Lane
Дата:
"Zeugswetter Andreas SB SD" <ZeugswetterA@spardat.at> writes:
> Imho it would be nice if we could allow "select timestamp(xxx);",
> and this has been the umpteenth request in this regard, and 7.2 is not even 
> released yet.

Unfortunately, there's just no way.  If we tried, it would be ambiguous
whether, say, "timestamp(6)" is a function call or a type name.

This is not one of my favorite parts of SQL92 syntax :-(
        regards, tom lane


Re: Time as keyword

От
Thomas Lockhart
Дата:
...
> Imho it would be nice if we could allow "select timestamp(xxx);",
> and this has been the umpteenth request in this regard, and 7.2 is not even
> released yet.

afaicr one of the very sticky areas is the SQL99-specified syntax for
date/time literals:
 timestamp(6) '2001-01-08 04:05:06'

which is difficult to reconcile with a function named timestamp:
 timstamp(something)
                      - Thomas


Re: Time as keyword

От
"Zeugswetter Andreas SB SD"
Дата:
> > Imho it would be nice if we could allow "select timestamp(xxx);",
> > and this has been the umpteenth request in this regard, and 7.2 is not even
> > released yet.
> 
> afaicr one of the very sticky areas is the SQL99-specified syntax for
> date/time literals:
> 
>   timestamp(6) '2001-01-08 04:05:06'
> 
> which is difficult to reconcile with a function named timestamp:

But since '2001-01-08 04:05:06' is in single quotes it can't be 
a column label, which would be the only other "token?" after a function, 
no ?

So it is eighter timestamp(6) followed by ' a single quote, or timestamp 
is a function in this context  ???

Andreas


Re: Time as keyword

От
Dwayne Miller
Дата:
I tried to create table foo (t time, time time); and received an error 
something like
'Error parsing near time'

I'm on 7.2.b2

I'll upgrade and try again.


Tom Lane wrote:

>Dwayne Miller <dwayne-miller@home.com> writes:
>
>>Did time become a keyword in 7.2? 7.1.3 allowed it as a column name... 
>>7.2 rejects it.
>>
>
>It's always been a keyword, but it is "more reserved" than it used to
>be.  See
>
>http://developer.postgresql.org/docs/postgres/sql-keywords-appendix.html
>
>However, according to that list TIME is still allowed as a column name,
>and indeed I get:
>
>regression=# create table foo (f1 time, time time);
>CREATE
>
>So I'm not sure what you did.
>
>            regards, tom lane
>