Skip to content

SQL: INSERT in multi-property full-text index causes error #1064

@gramian

Description

@gramian

ArcadeDB Version: ArcadeDB Server v23.3.1 (build da609e4/1680693032550/main)

JDK Version: Running on Mac OS X 12.6.4 - OpenJDK 64-Bit Server VM Homebrew

Expected behavior

Successful insert.

Actual behavior

Error on command execution (PostCommandHandler)
Error on command execution (PostCommandHandler)
java.lang.ArrayIndexOutOfBoundsException: Index 1 out of bounds for length 1
	at com.arcadedb.index.lsm.LSMTreeIndex.convertKeys(LSMTreeIndex.java:597)
	at com.arcadedb.index.lsm.LSMTreeIndex.put(LSMTreeIndex.java:386)
	at com.arcadedb.database.DocumentIndexer.addToIndex(DocumentIndexer.java:71)
	at com.arcadedb.database.DocumentIndexer.createDocument(DocumentIndexer.java:60)
	at com.arcadedb.database.EmbeddedDatabase.createRecordNoLock(EmbeddedDatabase.java:795)
	at com.arcadedb.database.EmbeddedDatabase.lambda$createRecord$16(EmbeddedDatabase.java:741)
	at com.arcadedb.database.EmbeddedDatabase.executeInReadLock(EmbeddedDatabase.java:1326)
	at com.arcadedb.database.EmbeddedDatabase.createRecord(EmbeddedDatabase.java:740)
	at com.arcadedb.database.MutableDocument.save(MutableDocument.java:287)
	at com.arcadedb.graph.MutableVertex.save(MutableVertex.java:60)
	at com.arcadedb.graph.MutableVertex.save(MutableVertex.java:39)
	at com.arcadedb.query.sql.executor.SaveElementStep$1.next(SaveElementStep.java:59)
	at com.arcadedb.query.sql.executor.InsertExecutionPlan.executeInternal(InsertExecutionPlan.java:65)
	at com.arcadedb.query.sql.parser.InsertStatement.execute(InsertStatement.java:124)
	at com.arcadedb.query.sql.parser.Statement.execute(Statement.java:85)
	at com.arcadedb.query.sql.parser.Statement.execute(Statement.java:69)
	at com.arcadedb.query.sql.SQLQueryEngine.command(SQLQueryEngine.java:97)
	at com.arcadedb.database.EmbeddedDatabase.command(EmbeddedDatabase.java:1264)
	at com.arcadedb.server.ServerDatabase.command(ServerDatabase.java:421)
	at com.arcadedb.server.http.handler.PostCommandHandler.executeCommand(PostCommandHandler.java:127)
	at com.arcadedb.server.http.handler.PostCommandHandler.execute(PostCommandHandler.java:88)
	at com.arcadedb.server.http.handler.DatabaseAbstractHandler.execute(DatabaseAbstractHandler.java:92)
	at com.arcadedb.server.http.handler.AbstractHandler.handleRequest(AbstractHandler.java:127)
	at io.undertow.server.Connectors.executeRootHandler(Connectors.java:393)
	at io.undertow.server.HttpServerExchange$1.run(HttpServerExchange.java:859)
	at org.jboss.threads.ContextHandler$1.runWith(ContextHandler.java:18)
	at org.jboss.threads.EnhancedQueueExecutor$Task.run(EnhancedQueueExecutor.java:2513)
	at org.jboss.threads.EnhancedQueueExecutor$ThreadBody.run(EnhancedQueueExecutor.java:1512)
	at org.xnio.XnioWorker$WorkerThreadFactory$1$1.run(XnioWorker.java:1282)
	at java.base/java.lang.Thread.run(Thread.java:829)

Steps to reproduce

This error happens with a complex schema and JSON insert; unfortunately, I am currently unable to reproduce in simplified form. Anyway, here is some information on the set up:

CREATE INDEX ON doc (name,description,keywords) FULL_TEXT;

After the index is created, records are inserted, but none of the indexed properties are null (see #1063 ), but sometimes one or two are the empty string ''.

The same INSERTs work if I create three separate indexes before inserting:

CREATE INDEX ON doc (name) FULL_TEXT;
CREATE INDEX ON doc (description) FULL_TEXT;
CREATE INDEX ON doc (keywords) FULL_TEXT;

So, I assume this is related to the multi property nature of the index.

Metadata

Metadata

Assignees

Labels

documentationImprovements or additions to documentationwontfixThis will not be worked on

Type

No type

Projects

No projects

Milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions