Skip to content

Commit 26a8d22

Browse files
committed
Adds new PError to CLI
1 parent f424ddd commit 26a8d22

File tree

3 files changed

+13
-1
lines changed

3 files changed

+13
-1
lines changed

partiql-cli/src/main/kotlin/org/partiql/cli/ErrorCodeString.kt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,4 +28,5 @@ enum class ErrorCodeString(val code: Int) {
2828
NUMERIC_VALUE_OUT_OF_RANGE(PError.NUMERIC_VALUE_OUT_OF_RANGE),
2929
INVALID_CHAR_VALUE_FOR_CAST(PError.INVALID_CHAR_VALUE_FOR_CAST),
3030
DIVISION_BY_ZERO(PError.DIVISION_BY_ZERO),
31+
DEGREE_VIOLATION_SCALAR_SUBQUERY(PError.DEGREE_VIOLATION_SCALAR_SUBQUERY)
3132
}

partiql-cli/src/main/kotlin/org/partiql/cli/pipeline/ErrorMessageFormatter.kt

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@ object ErrorMessageFormatter {
3434
ErrorCodeString.INVALID_CHAR_VALUE_FOR_CAST -> invalidCharValueForCast(error)
3535
ErrorCodeString.DIVISION_BY_ZERO -> divisionByZero(error)
3636
ErrorCodeString.TYPE_UNEXPECTED -> typeUnexpected(error)
37+
ErrorCodeString.DEGREE_VIOLATION_SCALAR_SUBQUERY -> degreeViolationScalarSubquery(error)
3738
ErrorCodeString.ALL -> "INTERNAL ERROR: This should never have occurred."
3839
null -> "Unrecognized error code received: ${error.code()}"
3940
}
@@ -129,6 +130,15 @@ object ErrorMessageFormatter {
129130
return "Cannot divide$dividendStr$dividendTypeStr by zero."
130131
}
131132

133+
/**
134+
* @see PError.DEGREE_VIOLATION_SCALAR_SUBQUERY
135+
*/
136+
private fun degreeViolationScalarSubquery(error: PError): String {
137+
val actualType = error.getOrNull("ACTUAL", java.lang.Integer::class.java)
138+
val actualTypeStr = prepare(actualType.toString(), " Actual degree: ", ".")
139+
return "Degree of scalar subquery must be 1 (one).$actualTypeStr"
140+
}
141+
132142
/**
133143
* @see PError.TYPE_UNEXPECTED
134144
*/
@@ -166,7 +176,7 @@ object ErrorMessageFormatter {
166176
val cause = error.getOrNull("CAUSE", Throwable::class.java)
167177
val writer = StringPrintWriter()
168178
writer.appendLine("Unexpected failure encountered. Caused by: $cause.")
169-
cause.printStackTrace(writer)
179+
cause?.printStackTrace(writer)
170180
return writer.w.sb.toString()
171181
}
172182

partiql-spi/src/main/java/org/partiql/spi/errors/PError.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -169,6 +169,7 @@ public <T> List<T> getListOrNull(@NotNull String key, @NotNull Class<T> clazz) {
169169
* @return a property that may provide additional information about the error; {@code null} if the property does
170170
* not exist, or if the property cannot be cast to {@code clazz}.
171171
*/
172+
@Nullable
172173
public <T> T getOrNull(@NotNull String key, @NotNull Class<T> clazz) {
173174
try {
174175
return get(key, clazz);

0 commit comments

Comments
 (0)