Обсуждение: Bug in Create sequence parsing?
============================================================================
POSTGRESQL BUG REPORT TEMPLATE
============================================================================
Your name : Adam Boileau
Your email address : metlstrm@ihug.co.nz
postgres@euclid.ihug.co.nz
System Configuration
---------------------
Architecture (example: Intel Pentium) : Dual Intel P2
Operating System (example: Linux 2.0.26 ELF) : Linux 2.2.10
PostgreSQL version (example: PostgreSQL-6.5.3): PostgreSQL-6.5.3
Compiler used (example: gcc 2.8.0) : gcc 2.95.1
Please enter a FULL description of your problem:
------------------------------------------------
Creating a sequence whose maxvalue is > signed-4-byte-int-max generates a parse error.
Inserting the same value into an int8 field works, however.
Conclusion: create sequence doesnt parse > int4, but insert does.
Please describe a way to repeat the problem. Please try to provide a
concise reproducible example, if at all possible:
----------------------------------------------------------------------
euclid=> create table test (Im_big int8);
CREATE
--Insert int4-max + 1
euclid=> insert into test values (2147483648);
INSERT 192329 1
--Create a sequence whose maxval is int4-max
euclid=> create sequence im_big_seq maxvalue 2147483647;
CREATE
--Hmm, works great.
euclid=> drop sequence im_big_seq;
DROP
--Create a sequence whose maxval is int4-max + 1
euclid=> create sequence im_big_seq maxvalue 2147483648;
ERROR: parser: parse error at or near "2147483648"
ERROR: parser: parse error at or near "2147483648"
--No sir, I dont like it.
If you know how this problem might be fixed, list the solution below:
---------------------------------------------------------------------
Seems we don't support int8 sequences. Should we? I don't see a good use for them. > ============================================================================ > POSTGRESQL BUG REPORT TEMPLATE > ============================================================================ > > > Your name : Adam Boileau > Your email address : metlstrm@ihug.co.nz > postgres@euclid.ihug.co.nz > > > System Configuration > --------------------- > Architecture (example: Intel Pentium) : Dual Intel P2 > > Operating System (example: Linux 2.0.26 ELF) : Linux 2.2.10 > > PostgreSQL version (example: PostgreSQL-6.5.3): PostgreSQL-6.5.3 > > Compiler used (example: gcc 2.8.0) : gcc 2.95.1 > > > Please enter a FULL description of your problem: > ------------------------------------------------ > > Creating a sequence whose maxvalue is > signed-4-byte-int-max generates a parse error. > Inserting the same value into an int8 field works, however. > Conclusion: create sequence doesnt parse > int4, but insert does. > > > > Please describe a way to repeat the problem. Please try to provide a > concise reproducible example, if at all possible: > ---------------------------------------------------------------------- > > euclid=> create table test (Im_big int8); > CREATE > > --Insert int4-max + 1 > euclid=> insert into test values (2147483648); > INSERT 192329 1 > > --Create a sequence whose maxval is int4-max > euclid=> create sequence im_big_seq maxvalue 2147483647; > CREATE > > --Hmm, works great. > euclid=> drop sequence im_big_seq; > DROP > > --Create a sequence whose maxval is int4-max + 1 > euclid=> create sequence im_big_seq maxvalue 2147483648; > ERROR: parser: parse error at or near "2147483648" > ERROR: parser: parse error at or near "2147483648" > > --No sir, I dont like it. > > > If you know how this problem might be fixed, list the solution below: > --------------------------------------------------------------------- > > > > > ************ > > -- Bruce Momjian | http://www.op.net/~candle pgman@candle.pha.pa.us | (610) 853-3000 + If your life is a hard drive, | 830 Blythe Avenue + Christ can be your backup. | Drexel Hill, Pennsylvania 19026
Bruce Momjian <pgman@candle.pha.pa.us> writes:
> Seems we don't support int8 sequences. Should we? I don't see a good
> use for them.
Sooner or later we'll probably want to offer an option to make OID be
8 bytes. I could see switching sequences to int8 as well when we
do that. Of course it would not work on platforms without compiler
support for 64-bit integers...
regards, tom lane