This is an automated email from the ASF dual-hosted git repository.
lakshsingla pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/druid.git
The following commit(s) were added to refs/heads/master by this push:
new fe0f4150c9a MSQ ingestion: Improve error message on encountering
non-long timestamp column (#17411)
fe0f4150c9a is described below
commit fe0f4150c9a0156a2d95034fd8f626dfc552b34b
Author: Akshat Jain <[email protected]>
AuthorDate: Fri Oct 25 15:02:32 2024 +0530
MSQ ingestion: Improve error message on encountering non-long timestamp
column (#17411)
This PR improves the error message during MSQ ingestion if we encounter a
non-long timestamp column.
---
.../java/org/apache/druid/msq/exec/MSQTasks.java | 8 ++++-
.../org/apache/druid/msq/exec/MSQTasksTest.java | 39 ++++++++++++++++++++++
2 files changed, 46 insertions(+), 1 deletion(-)
diff --git
a/extensions-core/multi-stage-query/src/main/java/org/apache/druid/msq/exec/MSQTasks.java
b/extensions-core/multi-stage-query/src/main/java/org/apache/druid/msq/exec/MSQTasks.java
index 2dff4419bdb..75dc1271e3a 100644
---
a/extensions-core/multi-stage-query/src/main/java/org/apache/druid/msq/exec/MSQTasks.java
+++
b/extensions-core/multi-stage-query/src/main/java/org/apache/druid/msq/exec/MSQTasks.java
@@ -114,7 +114,13 @@ public class MSQTasks
// be a long at execution time. So a nice user-friendly message isn't
needed here: it would only happen
// if the SQL layer is bypassed. Nice, friendly users wouldn't do that :)
final UnknownFault fault =
- UnknownFault.forMessage(StringUtils.format("Incorrect type for
[%s]", ColumnHolder.TIME_COLUMN_NAME));
+ UnknownFault.forMessage(
+ StringUtils.format(
+ "Incorrect type for column [%s]. Expected LONG but got type
[%s]. Please ensure that the value is cast to LONG.",
+ ColumnHolder.TIME_COLUMN_NAME,
+ timestamp.getClass().getSimpleName()
+ )
+ );
throw new MSQException(fault);
}
}
diff --git
a/extensions-core/multi-stage-query/src/test/java/org/apache/druid/msq/exec/MSQTasksTest.java
b/extensions-core/multi-stage-query/src/test/java/org/apache/druid/msq/exec/MSQTasksTest.java
index 904510408ff..eec5e9d4ebe 100644
---
a/extensions-core/multi-stage-query/src/test/java/org/apache/druid/msq/exec/MSQTasksTest.java
+++
b/extensions-core/multi-stage-query/src/test/java/org/apache/druid/msq/exec/MSQTasksTest.java
@@ -34,8 +34,10 @@ import org.apache.druid.indexer.TaskStatus;
import org.apache.druid.indexer.TaskStatusPlus;
import org.apache.druid.java.util.common.DateTimes;
import org.apache.druid.java.util.common.ISE;
+import org.apache.druid.java.util.common.StringUtils;
import org.apache.druid.msq.indexing.MSQWorkerTask;
import org.apache.druid.msq.indexing.MSQWorkerTaskLauncher;
+import org.apache.druid.msq.indexing.error.InsertTimeNullFault;
import org.apache.druid.msq.indexing.error.MSQErrorReport;
import org.apache.druid.msq.indexing.error.MSQException;
import org.apache.druid.msq.indexing.error.MSQFaultUtils;
@@ -46,6 +48,7 @@ import
org.apache.druid.msq.indexing.error.TooManyColumnsFault;
import org.apache.druid.msq.indexing.error.TooManyWorkersFault;
import org.apache.druid.msq.indexing.error.UnknownFault;
import org.apache.druid.msq.indexing.error.WorkerRpcFailedFault;
+import org.apache.druid.segment.column.ColumnHolder;
import org.apache.druid.utils.CollectionUtils;
import org.junit.Assert;
import org.junit.Test;
@@ -244,6 +247,42 @@ public class MSQTasksTest
}
}
+ @Test
+ public void test_getPrimaryTimestampFromObjectForInsert_longValue()
+ {
+ Assert.assertEquals(100,
MSQTasks.primaryTimestampFromObjectForInsert(100L));
+ }
+
+ @Test
+ public void
test_getPrimaryTimestampFromObjectForInsert_nullValueShouldThrowError()
+ {
+ final MSQException e = Assert.assertThrows(
+ MSQException.class,
+ () -> MSQTasks.primaryTimestampFromObjectForInsert(null)
+ );
+ Assert.assertEquals(InsertTimeNullFault.INSTANCE, e.getFault());
+ }
+
+ @Test
+ public void
test_getPrimaryTimestampFromObjectForInsert_DoubleValueShouldThrowError()
+ {
+ final Object timestamp = 1.693837200123456E15;
+ final MSQException e = Assert.assertThrows(
+ MSQException.class,
+ () -> MSQTasks.primaryTimestampFromObjectForInsert(timestamp)
+ );
+ Assert.assertEquals(
+ UnknownFault.forMessage(
+ StringUtils.format(
+ "Incorrect type for column [%s]. Expected LONG but got type
[%s]. Please ensure that the value is cast to LONG.",
+ ColumnHolder.TIME_COLUMN_NAME,
+ timestamp.getClass().getSimpleName()
+ )
+ ),
+ e.getFault()
+ );
+ }
+
static class TasksTestOverlordClient extends NoopOverlordClient
{
// Num of slots available for tasks
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]