Thread: RE: [SQL] Text type
The current limit to a TEXT field is MAX_TUPLE_SIZE - TUPLE_OVERHEAD - ANY_OTHER_FIELD_SIZES_AND_OVERHEAD, which with no other fields in the table is just less than 8k. But this can be increased at compile time. It's set to 8k because that tends to be optimal page size for most of the OS's that are supported. -DEJ > -----Original Message----- > From: Guido.Goldstein@t-online.de [mailto:Guido.Goldstein@t-online.de] > Sent: Wednesday, January 13, 1999 7:40 AM > To: pgsql-sql@hub.org > Subject: Re: [SQL] Text type > > > > Hello! > > On Wed, 13 Jan 1999 08:56:19 +0100 (MET) > Remigiusz Sokolowski <rems@gdansk.sprint.pl> wrote: > > > > > > Hi List, > > > > > > What is the max size of the text type in characters, > preferable, or > > > bytes. > > > > > > Thanks, > > > > > > -Greg > > > > AFAIK this is 8KB > > Somewhat less then 8K, because one -record- has to fit into one page > (of 8K). AFAIK. > > Bye > Guido > -- > We're showing progress. Things are getting worse at a slower rate. >
Jackson, DeJuan hat gesagt: // Jackson, DeJuan wrote: > The current limit to a TEXT field is MAX_TUPLE_SIZE - TUPLE_OVERHEAD - > ANY_OTHER_FIELD_SIZES_AND_OVERHEAD, which with no other fields in the > table is just less than 8k. But this can be increased at compile time. > It's set to 8k because that tends to be optimal page size for most of > the OS's that are supported. > -DEJ My question to this is: What to do if I need a big text field on a not recompiled (8k buffer size) postgresql server? I am developing a www backend with perl-DBI that keeps track of a lot of texts that can get longer than 8k. When inserting these they get cut off or the query gives an error. I consider changing to a large object type field instead but how can I conveniently insert, change and search the text there? (DBD::Pg does not have those nice lo_read() functions, just lo_import and lo_export) I think mine is a common problem. So I would be very happy if I could get some tips on how to handle large chunks of text with postgres (and perl) Thank you, -- __ __ Frank Barknecht ____ ______ ____ __ trip\ \ / /wire ______ / __// __ /__/ __// // __ \ \/ / __ \\ ___\ / / / ____/ / / / // ____// /\ \\ ___\\____ \ /_/ /_____/ /_/ /_//_____// / \ \\_____\\_____\ /_/ \_\
> I consider changing to a large object type field instead but how can I > conveniently insert, change and search the text there? Large objects are nothing but files with a postgres OID. You will save yourself a lot of hassle by treating your text as files. You inset a text by creating a file and inserting its name in a table. You change it by editing or replacing the file. In order to search your texts, split them up and load into a table one word per row. This will also allow you to build an index. Numbering those words in a sequential order will also allow sequences, or phrases, to be matched. If you need a full text search, refer to contrib/fulltextindex or search files directly with grep. The latter will work if the number of files in one directory does not exceed the maximum number of command line arguments your system supports (which is about 2000 in most linuxes, but can be ridiculously small in other systems (e. g., 80 on IRIX). --Gene