Discussion:
[ADMIN] extend column limit with blocksize does not work
(too old to reply)
Yannick Monclin
2012-01-26 12:32:28 UTC
Permalink
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
--
Sent via pgsql-admin mailing list (pgsql-***@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-admin
Tom Lane
2012-01-26 15:39:21 UTC
Permalink
Post by Yannick Monclin
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.
Post by Yannick Monclin
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
--
Sent via pgsql-admin mailing list (pgsql-***@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-admin
Loading...