Skip to content

SQL: INSERTing null into full-text indexed properties causes null-pointer exception error #1063

@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

Inserting null values as full-text indexed properties into a document causes a java.lang.NullPointerException error in the LSM tree.

Expected behavior

Succesful insert.

Actual behavior

Error on command execution
Error on command execution (PostCommandHandler)
java.lang.NullPointerException
	at com.arcadedb.index.lsm.LSMTreeFullTextIndex.analyzeText(LSMTreeFullTextIndex.java:327)
	at com.arcadedb.index.lsm.LSMTreeFullTextIndex.put(LSMTreeFullTextIndex.java:155)
	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.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:1538)
	at org.xnio.XnioWorker$WorkerThreadFactory$1$1.run(XnioWorker.java:1282)
	at java.base/java.lang.Thread.run(Thread.java:829)

Steps to reproduce

CREATE DOCUMENT TYPE doc;
CREATE PROPERTY doc.str STRING;
CREATE INDEX ON doc (str) FULL_TEXT;
INSERT INTO doc (str) VALUES ('a'), ('b'), (null);

PS: Possibly related to: #1062

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type

Projects

No projects

Milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions