Обсуждение: Table name lengths...
Hi All, I've noticed that in the pg_type system table, there is a data type called "name", would that represent the definition of the table name space, including the max length a talbe name space could be? If so where would I find the same definition for the max name space for a sequence, or index... -- Chris Bowlby <excalibur@hub.org> Hub.Org Networking Services
On Tuesday 02 September 2003 17:55, Chris Bowlby wrote: > Hi All, > > I've noticed that in the pg_type system table, there is a data type > called "name", would that represent the definition of the table name > space, including the max length a talbe name space could be? If so where > would I find the same definition for the max name space for a sequence, > or index... All names are the same length. This is 64 characters, but I _think_ it can be changed with a recompile. -- Richard Huxton Archonet Ltd
On Tue, 2003-09-02 at 11:55, Chris Bowlby wrote: > Hi All, > > I've noticed that in the pg_type system table, there is a data type > called "name", would that represent the definition of the table name > space, including the max length a talbe name space could be? If so where > would I find the same definition for the max name space for a sequence, > or index... No matter how long PostgreSQL lets you make table names, I'd stick with ANSI standard 31 characters. -- ----------------------------------------------------------------- Ron Johnson, Jr. ron.l.johnson@cox.net Jefferson, LA USA Causation does NOT equal correlation !!!!!!!!
On Tue, Sep 02, 2003 at 06:24:55PM +0100, Richard Huxton wrote: > On Tuesday 02 September 2003 17:55, Chris Bowlby wrote: > > I've noticed that in the pg_type system table, there is a data type > > called "name", would that represent the definition of the table name > > space, including the max length a talbe name space could be? If so where > > would I find the same definition for the max name space for a sequence, > > or index... > > All names are the same length. This is 64 characters, but I _think_ it can be > changed with a recompile. 63 characters IIRC (the 64th is used for a trailing \0, I think). -- Alvaro Herrera (<alvherre[a]dcc.uchile.cl>) "The first of April is the day we remember what we are the other 364 days of the year" (Mark Twain)
On Tue, 2003-09-02 at 14:24, Richard Huxton wrote: I'm working with an application that needs to be able to determine this depending on the version of PostgreSQL that is running. I know what anything less then 7.3 was 32 characters and anything newer is currently 64, but I'm hoping to be able to check the lengths from my application before creating a table/sequence/index, etc.. The names have to be generated from the application and as such by allowing a dynamic means to search for them I wont need to "hard code" it.. > On Tuesday 02 September 2003 17:55, Chris Bowlby wrote: > > Hi All, > > > > I've noticed that in the pg_type system table, there is a data type > > called "name", would that represent the definition of the table name > > space, including the max length a talbe name space could be? If so where > > would I find the same definition for the max name space for a sequence, > > or index... > > All names are the same length. This is 64 characters, but I _think_ it can be > changed with a recompile. -- Chris Bowlby <excalibur@hub.org> Hub.Org Networking Services
Chris Bowlby <excalibur@hub.org> writes:
> I'm working with an application that needs to be able to determine this
> depending on the version of PostgreSQL that is running. I know what
> anything less then 7.3 was 32 characters and anything newer is currently
> 64, but I'm hoping to be able to check the lengths from my application
> before creating a table/sequence/index, etc..
I'd do
SELECT 1 AS "some really long string here";
and see how many characters come back in the column title ...
regards, tom lane
On Tue, Sep 02, 2003 at 02:33:00PM -0300, Chris Bowlby wrote:
> On Tue, 2003-09-02 at 14:24, Richard Huxton wrote:
>
> I'm working with an application that needs to be able to determine this
> depending on the version of PostgreSQL that is running. I know what
> anything less then 7.3 was 32 characters and anything newer is currently
> 64, but I'm hoping to be able to check the lengths from my application
> before creating a table/sequence/index, etc..
Cast a long string to the name type and measure its length:
test=> SELECT length(repeat('xyzzy', 100)::name);
length
--------
63
(1 row)
--
Alvaro Herrera (<alvherre[a]dcc.uchile.cl>)
Voy a acabar con todos los humanos / con los humanos yo acabaré
voy a acabar con todos / con todos los humanos acabaré (Bender)
Ron Johnson <ron.l.johnson@cox.net> writes:
> No matter how long PostgreSQL lets you make table names, I'd stick
> with ANSI standard 31 characters.
"ANSI standard"? SQL92 specifies that names can be up to 128 characters
long. Perhaps there was a shorter limit in SQL89, but that ranks as
ancient history now.
(In fact, I just now realized that it says *characters*, not *bytes*,
which means that in a multibyte encoding you could need quite a bit more
than 128 bytes to meet the spec's requirement...)
regards, tom lane
On Tue, 2003-09-02 at 14:46, Alvaro Herrera wrote:
> Cast a long string to the name type and measure its length:
>
> test=> SELECT length(repeat('xyzzy', 100)::name);
> length
> --------
> 63
> (1 row)
Cool, thanks that will work fairly well..
--
Chris Bowlby <excalibur@hub.org>
Hub.Org Networking Services
On Tue, 2003-09-02 at 12:47, Tom Lane wrote: > Ron Johnson <ron.l.johnson@cox.net> writes: > > No matter how long PostgreSQL lets you make table names, I'd stick > > with ANSI standard 31 characters. > > "ANSI standard"? SQL92 specifies that names can be up to 128 characters > long. Perhaps there was a shorter limit in SQL89, but that ranks as > ancient history now. > > (In fact, I just now realized that it says *characters*, not *bytes*, > which means that in a multibyte encoding you could need quite a bit more > than 128 bytes to meet the spec's requirement...) Ok, color me erroneous. The 31 octet length is on Rdb/VMS, and was picked because that's how long VMS file names were/are. Also, Oracle has an object limit of 30 characters. -- ----------------------------------------------------------------- Ron Johnson, Jr. ron.l.johnson@cox.net Jefferson, LA USA Regarding war zones: "There's nothing sacrosanct about a hotel with a bunch of journalists in it." Marine Lt. Gen. Bernard E. Trainor (Retired)