Re: org.postgresql.util.PSQLException: ERROR: index row requires more memory than default(8191) - Mailing list pgsql-sql

From David G. Johnston
Subject Re: org.postgresql.util.PSQLException: ERROR: index row requires more memory than default(8191)
Date
Msg-id CAKFQuwY3kRNCJiRWxF4N__zheXgf_kKr3EM-=k7O-2yW73dDTQ@mail.gmail.com
Whole thread Raw
In response to org.postgresql.util.PSQLException: ERROR: index row requires more memory than default(8191)  (msn <pioneer.suri@gmail.com>)
Responses Re: org.postgresql.util.PSQLException: ERROR: index row requires more memory than default(8191)  (msn <pioneer.suri@gmail.com>)
List pgsql-sql
On Mon, Apr 18, 2016 at 11:05 PM, msn <pioneer.suri@gmail.com> wrote:
I am trying to use PostgreSQL in our existing project to improve the
performance and make it fiendly with JSON. I have done some research on the
PostgerSQL and trying to integrate it into our application. But I am facing
some problem when I tried to insert the large json document into the table.
It is working with small set of json document but fails with the large data.
The following is the error dispalyed in the console when inserting the data.

org.postgresql.util.PSQLException: ERROR: index row requires 11936 bytes,
maximum size is 8191
        at
org.postgresql.core.v3.QueryExecutorImpl.receiveErrorResponse(QueryExecutorImpl.java:2284)
        at
org.postgresql.core.v3.QueryExecutorImpl.processResults(QueryExecutorImpl.java:2003)
        at
org.postgresql.core.v3.QueryExecutorImpl.execute(QueryExecutorImpl.java:200)
        at org.postgresql.jdbc.PgStatement.execute(PgStatement.java:424)
        at org.postgresql.jdbc.PgStatement.executeWithFlags(PgStatement.java:321)
        at org.postgresql.jdbc.PgStatement.executeUpdate(PgStatement.java:297)
        at com.practice.PracticeClass.main(PracticeClass.java:28)
org.postgresql.util.PSQLException: ERROR: index row requires 11936 bytes,
maximum size is 8191

In the above error, It is saying memory is not sufficient to create an
index. I am new to this Postgres. I am not creating any index when inserting
the json document. I am thinking it is internally creating an index for the
column.

Table creation: Create table sample(id serial, info jsonb);

Could any tell me how to resolve this error or how to configure to increase
the memory to insert large data.


​You seem to either be under or mis-reporting your setup here.  The specific error is that an indexed data element cannot be larger than 8191 bytes but the value you are attempting to insert into the index is larger​
 
​than that.  As your example does not include an index there must be something else involved that does.

​Without a much more detailed, and ideally self-contained, setup it will not be possible to advise further.

Resolution of the error generally involves not constructing an index on fields that can become larger than 8191 bytes.

This value is supposedly documented but finding it appears to be non-trivial...

Its the act of insertion of a too-large document into an indexed column that provokes the complaint.  The index creation has already occurred.

If you know how to use "psql" it would be good to show descriptions of the relevant objects using its facilities.  The same can generally be accomplished via pgAdmin or whatever tool you use to inspect the database.

David J.

pgsql-sql by date:

Previous
From: msn
Date:
Subject: org.postgresql.util.PSQLException: ERROR: index row requires more memory than default(8191)
Next
From: "Venkatesan, Sekhar"
Date:
Subject: PostgreSQL:ALTER TABLE command hangs forever when DB partitioning is enabled.