Обсуждение: extend column limit with blocksize does not work

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

extend column limit with blocksize does not work

От
Yannick Monclin
Дата:
Hi,

I use the query survey software "Limesurvey", when this sofware build
some complex survey, it's necessary to have more than 1600 columns in
one table. So, i have used this parameter (configure
--with-blocksize=32) to build my last postgresql  (9.1.2). Compilation
process succeed. I create a DB with initdb (i change
posgresql.conf.sample --> shared_buffers = 32MB in order to have no
errors when initdb create the database, default value was not set and
initdb stop).

I create an user and a test database, with no problem.

In order to testing, i have a batch with a loop to alter table and add
many columns... my batch stops at 1600 columns wtih this error :

ERROR: tables can have at most 1600 columns

I don't understand why, it's seems me all is ok, did you have an idea ?
Can i have more than 1600 columns ? According to the documentation,
default limit with blocksize 8kb are 250 to 1600, but with a blocksize
to 32Kk limits are quadrupled, it's right ?

Thanks in advance,
Yannick

Platform : Linux debian 64b

pg_controldata output :
pg_control version number:            903
Catalog version number:               201105231
Database system identifier:           5701891827790346600
Database cluster state:               shut down
pg_control last modified:             Thu 26 Jan 2012 11:52:25 AM CET
Latest checkpoint location:           0/188EA08
Prior checkpoint location:            0/188E730
Latest checkpoint's REDO location:    0/188EA08
Latest checkpoint's TimeLineID:       1
Latest checkpoint's NextXID:          0/678
Latest checkpoint's NextOID:          11868
Latest checkpoint's NextMultiXactId:  1
Latest checkpoint's NextMultiOffset:  0
Latest checkpoint's oldestXID:        668
Latest checkpoint's oldestXID's DB:   1
Latest checkpoint's oldestActiveXID:  0
Time of latest checkpoint:            Thu 26 Jan 2012 11:52:25 AM CET
Minimum recovery ending location:     0/0
Backup start location:                0/0
Current wal_level setting:            minimal
Current max_connections setting:      50
Current max_prepared_xacts setting:   0
Current max_locks_per_xact setting:   64
Maximum data alignment:               8
Database block size:                  32768
Blocks per segment of large relation: 32768
WAL block size:                       8192
Bytes per WAL segment:                16777216
Maximum length of identifiers:        64
Maximum columns in an index:          32
Maximum size of a TOAST chunk:        8140
Date/time type storage:               64-bit integers
Float4 argument passing:              by value
Float8 argument passing:              by value

--

Yannick Monclin
Université de Reims Champagne Ardenne





Re: extend column limit with blocksize does not work

От
Tom Lane
Дата:
Yannick Monclin <yannick.monclin@univ-reims.fr> writes:
> I use the query survey software "Limesurvey", when this sofware build
> some complex survey, it's necessary to have more than 1600 columns in
> one table.

I'd suggest rethinking the database schema.  Even if you could get that
to work, it's likely to perform pretty horridly.

> So, i have used this parameter (configure
> --with-blocksize=32) to build my last postgresql  (9.1.2).

BLCKSZ is not the limiting factor here --- it's the tuple header format,
specifically the width of t_hoff.  You might care to look at the first
few comments in src/include/access/htup.h.

            regards, tom lane