[ 
https://issues.apache.org/jira/browse/ATLAS-5228?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Pinal Shah updated ATLAS-5228:
------------------------------
    Description: 
*Issue:*

When rdbms backend is selected, it errors while creating table with many 
columns > 1000

*Exception:*
 
{code:java}
[NotificationHookConsumer thread-0] ERROR [RdbmsStore.java:289] attempt #1: 
failed to create key(storeId=6, keyLength=14953, key=^CB CREATE TABLE 
my_large_table_nx1XXX (col1 STRING,...col1000 STRING) STORED AS TEXTFIL ): 
Exception [EclipseLink-4002] (Eclipse Persistence Services - 
2.7.15.v20240516-53511fdbd8): 
org.eclipse.persistence.exceptions.DatabaseException Internal Exception: 
org.postgresql.util.PSQLException: ERROR: index row size 3328 exceeds btree 
version 4 maximum 2704 for index "janus_key_uk_store_name"  Detail: Index row 
references tuple (188,100) in relation "janus_key".  Hint: Values larger than 
1/3 of a buffer page cannot be indexed. Consider a function index of an MD5 
hash of the value, or use full text indexing. Error Code: 0 Call: INSERT INTO 
janus_key (id, name, store_id) VALUES (?, ?, ?)  bind => [3 parameters bound] 
2025-08-01 16:35:26,520 [NotificationHookConsumer thread-0] ERROR 
[StandardJanusGraph.java:971] Could not commit transaction [921] due to storage 
exception in commit org.janusgraph.core.JanusGraphException: Could not execute 
operation due to backend exception  at 
org.janusgraph.diskstorage.util.BackendOperation.execute(BackendOperation.java:54)
  at 
org.janusgraph.diskstorage.keycolumnvalue.cache.CacheTransaction.persist(CacheTransaction.java:96)
  at 
org.janusgraph.diskstorage.keycolumnvalue.cache.CacheTransaction.flushInternal(CacheTransaction.java:153)
  at 
org.janusgraph.diskstorage.keycolumnvalue.cache.CacheTransaction.commit(CacheTransaction.java:210)
  at 
org.janusgraph.diskstorage.BackendTransaction.commitStorage(BackendTransaction.java:149)
  at 
org.janusgraph.graphdb.database.StandardJanusGraph.commit(StandardJanusGraph.java:968){code}
*Root Cause:*

Limitation in Postgres: An index entry cannot exceed approximately one-third of 
a page (after TOAST compression, if applicable)

[65.1. B-Tree Indexes|https://www.postgresql.org/docs/current/btree.html]

*Fix:*

Update indexed attributes which stores large string values to non indexable

  was:
*Issue:* 

Error while create table with many columns > 1000

*Exception:*
 
{code:java}
[NotificationHookConsumer thread-0] ERROR [RdbmsStore.java:289] attempt #1: 
failed to create key(storeId=6, keyLength=14953, key=^CB CREATE TABLE 
my_large_table_nx1XXX (col1 STRING,...col1000 STRING) STORED AS TEXTFIL ): 
Exception [EclipseLink-4002] (Eclipse Persistence Services - 
2.7.15.v20240516-53511fdbd8): 
org.eclipse.persistence.exceptions.DatabaseException Internal Exception: 
org.postgresql.util.PSQLException: ERROR: index row size 3328 exceeds btree 
version 4 maximum 2704 for index "janus_key_uk_store_name"  Detail: Index row 
references tuple (188,100) in relation "janus_key".  Hint: Values larger than 
1/3 of a buffer page cannot be indexed. Consider a function index of an MD5 
hash of the value, or use full text indexing. Error Code: 0 Call: INSERT INTO 
janus_key (id, name, store_id) VALUES (?, ?, ?)  bind => [3 parameters bound] 
2025-08-01 16:35:26,520 [NotificationHookConsumer thread-0] ERROR 
[StandardJanusGraph.java:971] Could not commit transaction [921] due to storage 
exception in commit org.janusgraph.core.JanusGraphException: Could not execute 
operation due to backend exception  at 
org.janusgraph.diskstorage.util.BackendOperation.execute(BackendOperation.java:54)
  at 
org.janusgraph.diskstorage.keycolumnvalue.cache.CacheTransaction.persist(CacheTransaction.java:96)
  at 
org.janusgraph.diskstorage.keycolumnvalue.cache.CacheTransaction.flushInternal(CacheTransaction.java:153)
  at 
org.janusgraph.diskstorage.keycolumnvalue.cache.CacheTransaction.commit(CacheTransaction.java:210)
  at 
org.janusgraph.diskstorage.BackendTransaction.commitStorage(BackendTransaction.java:149)
  at 
org.janusgraph.graphdb.database.StandardJanusGraph.commit(StandardJanusGraph.java:968){code}
*Root Cause:*

Limitation in Postgres: An index entry cannot exceed approximately one-third of 
a page (after TOAST compression, if applicable)

[65.1. B-Tree Indexes|https://www.postgresql.org/docs/current/btree.html]

*Fix:*

Update indexed attributes which stores large string values to non indexable


> Exception index row size exceeds in janus_key_uk_store_name when large string 
> is indexed
> ----------------------------------------------------------------------------------------
>
>                 Key: ATLAS-5228
>                 URL: https://issues.apache.org/jira/browse/ATLAS-5228
>             Project: Atlas
>          Issue Type: Bug
>          Components:  atlas-core
>            Reporter: Pinal Shah
>            Assignee: Pinal Shah
>            Priority: Major
>
> *Issue:*
> When rdbms backend is selected, it errors while creating table with many 
> columns > 1000
> *Exception:*
>  
> {code:java}
> [NotificationHookConsumer thread-0] ERROR [RdbmsStore.java:289] attempt #1: 
> failed to create key(storeId=6, keyLength=14953, key=^CB CREATE TABLE 
> my_large_table_nx1XXX (col1 STRING,...col1000 STRING) STORED AS TEXTFIL ): 
> Exception [EclipseLink-4002] (Eclipse Persistence Services - 
> 2.7.15.v20240516-53511fdbd8): 
> org.eclipse.persistence.exceptions.DatabaseException Internal Exception: 
> org.postgresql.util.PSQLException: ERROR: index row size 3328 exceeds btree 
> version 4 maximum 2704 for index "janus_key_uk_store_name"  Detail: Index row 
> references tuple (188,100) in relation "janus_key".  Hint: Values larger than 
> 1/3 of a buffer page cannot be indexed. Consider a function index of an MD5 
> hash of the value, or use full text indexing. Error Code: 0 Call: INSERT INTO 
> janus_key (id, name, store_id) VALUES (?, ?, ?)  bind => [3 parameters bound] 
> 2025-08-01 16:35:26,520 [NotificationHookConsumer thread-0] ERROR 
> [StandardJanusGraph.java:971] Could not commit transaction [921] due to 
> storage exception in commit org.janusgraph.core.JanusGraphException: Could 
> not execute operation due to backend exception  at 
> org.janusgraph.diskstorage.util.BackendOperation.execute(BackendOperation.java:54)
>   at 
> org.janusgraph.diskstorage.keycolumnvalue.cache.CacheTransaction.persist(CacheTransaction.java:96)
>   at 
> org.janusgraph.diskstorage.keycolumnvalue.cache.CacheTransaction.flushInternal(CacheTransaction.java:153)
>   at 
> org.janusgraph.diskstorage.keycolumnvalue.cache.CacheTransaction.commit(CacheTransaction.java:210)
>   at 
> org.janusgraph.diskstorage.BackendTransaction.commitStorage(BackendTransaction.java:149)
>   at 
> org.janusgraph.graphdb.database.StandardJanusGraph.commit(StandardJanusGraph.java:968){code}
> *Root Cause:*
> Limitation in Postgres: An index entry cannot exceed approximately one-third 
> of a page (after TOAST compression, if applicable)
> [65.1. B-Tree Indexes|https://www.postgresql.org/docs/current/btree.html]
> *Fix:*
> Update indexed attributes which stores large string values to non indexable



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to