You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@drill.apache.org by "Xurenhe (Jira)" <ji...@apache.org> on 2022/04/22 10:41:00 UTC
[jira] [Created] (DRILL-8194) Function of REPLACE throws IndexOutOfBoundsException, if text's length is more than previously applied
Xurenhe created DRILL-8194:
------------------------------
Summary: Function of REPLACE throws IndexOutOfBoundsException, if text's length is more than previously applied
Key: DRILL-8194
URL: https://issues.apache.org/jira/browse/DRILL-8194
Project: Apache Drill
Issue Type: Bug
Components: Functions - Drill
Reporter: Xurenhe
Function of *REPLACE* throws IndexOutOfBoundsException, if text's length is more than previously applied.
TEST-CASE:
{code:java}
// TestStringFunctions#testReplaceOutBuffer
@Test
public void testReplaceOutBuffer() throws Exception {
String originValue = RandomStringUtils.randomAlphabetic(8192).toLowerCase() + "12345";
String expectValue = originValue.replace("12345", "67890");
String sql = "select replace(c1, '12345', '67890') as col from (values('" + originValue + "')) as t(c1)";
testBuilder()
.sqlQuery(sql)
.ordered()
.baselineColumns("col")
.baselineValues(expectValue)
.go();
} {code}
Error-Stack:
{code:java}
java.lang.Exception: org.apache.drill.common.exceptions.UserRemoteException: SYSTEM ERROR: IndexOutOfBoundsException: DrillBuf[143], udle: [107 0..8192], index: 8192, length: 1 (expected: range(0, 8192))
ledger[114] allocator: frag:0:0), isOwning: true, size: 8192, references: 1, life: 61488788902200..0, allocatorManager: [106, life: 61488788791129..0] holds 1 buffers.
DrillBuf[143], udle: [107 0..8192]
event log for: DrillBuf[143]
61488788929532 create()
at org.apache.drill.common.StackTrace.<init>(StackTrace.java:33)
at org.apache.drill.common.HistoricalLog$Event.<init>(HistoricalLog.java:39)
at org.apache.drill.common.HistoricalLog.recordEvent(HistoricalLog.java:95)
at io.netty.buffer.DrillBuf.<init>(DrillBuf.java:89)
at org.apache.drill.exec.memory.AllocationManager$BufferLedger.newDrillBuf(AllocationManager.java:384)
at org.apache.drill.exec.memory.BaseAllocator.bufferWithoutReservation(BaseAllocator.java:261)
at org.apache.drill.exec.memory.BaseAllocator.buffer(BaseAllocator.java:242)
at org.apache.drill.exec.ops.BufferManagerImpl.getManagedBuffer(BufferManagerImpl.java:63)
at org.apache.drill.exec.ops.BufferManagerImpl.replace(BufferManagerImpl.java:53)
at io.netty.buffer.DrillBuf.reallocIfNeeded(DrillBuf.java:101)
at org.apache.drill.exec.test.generated.ProjectorGen0.doSetup(ProjectorGen0.java:139)
at org.apache.drill.exec.physical.impl.project.ProjectorTemplate.setup(ProjectorTemplate.java:107)
at org.apache.drill.exec.physical.impl.project.ProjectRecordBatch.setupNewSchemaFromInput(ProjectRecordBatch.java:289)
at org.apache.drill.exec.physical.impl.project.ProjectRecordBatch.setupNewSchema(ProjectRecordBatch.java:265)
at org.apache.drill.exec.record.AbstractUnaryRecordBatch.innerNext(AbstractUnaryRecordBatch.java:92)
at org.apache.drill.exec.physical.impl.project.ProjectRecordBatch.innerNext(ProjectRecordBatch.java:85)
at org.apache.drill.exec.record.AbstractRecordBatch.next(AbstractRecordBatch.java:170)
at org.apache.drill.exec.physical.impl.validate.IteratorValidatorBatchIterator.next(IteratorValidatorBatchIterator.java:237)
at org.apache.drill.exec.physical.impl.BaseRootExec.next(BaseRootExec.java:103)
at org.apache.drill.exec.physical.impl.ScreenCreator$ScreenRoot.innerNext(ScreenCreator.java:81)
at org.apache.drill.exec.physical.impl.BaseRootExec.next(BaseRootExec.java:93) {code}
--
This message was sent by Atlassian Jira
(v8.20.7#820007)