This is an automated email from the ASF dual-hosted git repository. mblow pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/asterixdb.git
commit 81c526671dfca70ee1ebae9c64677e117a212362 Author: Michael Blow <[email protected]> AuthorDate: Thu Jan 27 10:23:23 2022 -0500 [NO ISSUE][MISC] HTTP error handling, exception message cleanup Change-Id: If8fc109aee55571aff4a87029cad2a7a0c516d0c Reviewed-on: https://asterix-gerrit.ics.uci.edu/c/asterixdb/+/15023 Reviewed-by: Hussain Towaileb <[email protected]> Tested-by: Michael Blow <[email protected]> --- .../asterix/translator/util/ValidateUtil.java | 12 +- .../asterix/api/http/server/ClusterApiServlet.java | 2 +- .../api/http/server/DiagnosticsApiServlet.java | 4 +- .../asterix/api/http/server/NCUdfApiServlet.java | 14 +- .../asterix/app/translator/QueryTranslator.java | 10 +- .../asterix/test/common/ResultExtractor.java | 2 +- .../src/test/resources/metadata/testsuite.xml | 20 +- .../queries_sqlpp/objects/ObjectsQueries.xml | 22 +-- .../request-param-validation-400-BAD.01.regexjson | 2 +- .../warnings-limit/warnings-limit.03.regexadm | 2 +- .../warnings-limit/warnings-limit.06.regexadm | 2 +- .../warnings-limit/warnings-limit.08.regexadm | 2 +- ...stsuite_external_dataset_azure_blob_storage.xml | 8 +- .../runtimets/testsuite_external_dataset_s3.xml | 8 +- .../resources/runtimets/testsuite_it_sqlpp.xml | 2 +- .../test/resources/runtimets/testsuite_sqlpp.xml | 202 ++++++++++----------- .../src/main/resources/asx_errormsg/en.properties | 44 ++--- hyracks-fullstack/hyracks/hyracks-http/pom.xml | 5 + .../hyracks/http/server/AbstractServlet.java | 33 ++-- 19 files changed, 207 insertions(+), 189 deletions(-) diff --git a/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/translator/util/ValidateUtil.java b/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/translator/util/ValidateUtil.java index 0d6a452..a2b26e7 100644 --- a/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/translator/util/ValidateUtil.java +++ b/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/translator/util/ValidateUtil.java @@ -236,7 +236,7 @@ public class ValidateUtil { break; default: throw new CompilationException(ErrorCode.COMPILATION_ERROR, sourceLoc, - "The field \"" + displayFieldName + "\" which is of type " + fieldType.getTypeTag() + "The field '" + displayFieldName + "' which is of type " + fieldType.getTypeTag() + " cannot be indexed using the BTree index."); } break; @@ -251,14 +251,14 @@ public class ValidateUtil { break; default: throw new CompilationException(ErrorCode.COMPILATION_ERROR, sourceLoc, - "The field \"" + displayFieldName + "\" which is of type " + fieldType.getTypeTag() + "The field '" + displayFieldName + "' which is of type " + fieldType.getTypeTag() + " cannot be indexed using the RTree index."); } break; case LENGTH_PARTITIONED_NGRAM_INVIX: if (fieldType.getTypeTag() != ATypeTag.STRING) { throw new CompilationException(ErrorCode.COMPILATION_ERROR, sourceLoc, - "The field \"" + displayFieldName + "\" which is of type " + fieldType.getTypeTag() + "The field '" + displayFieldName + "' which is of type " + fieldType.getTypeTag() + " cannot be indexed using the Length Partitioned N-Gram index."); } break; @@ -270,14 +270,14 @@ public class ValidateUtil { break; default: throw new CompilationException(ErrorCode.COMPILATION_ERROR, sourceLoc, - "The field \"" + displayFieldName + "\" which is of type " + fieldType.getTypeTag() + "The field '" + displayFieldName + "' which is of type " + fieldType.getTypeTag() + " cannot be indexed using the Length Partitioned Keyword index."); } break; case SINGLE_PARTITION_NGRAM_INVIX: if (fieldType.getTypeTag() != ATypeTag.STRING) { throw new CompilationException(ErrorCode.COMPILATION_ERROR, sourceLoc, - "The field \"" + displayFieldName + "\" which is of type " + fieldType.getTypeTag() + "The field '" + displayFieldName + "' which is of type " + fieldType.getTypeTag() + " cannot be indexed using the N-Gram index."); } break; @@ -289,7 +289,7 @@ public class ValidateUtil { break; default: throw new CompilationException(ErrorCode.COMPILATION_ERROR, sourceLoc, - "The field \"" + displayFieldName + "\" which is of type " + fieldType.getTypeTag() + "The field '" + displayFieldName + "' which is of type " + fieldType.getTypeTag() + " cannot be indexed using the Keyword index."); } break; diff --git a/asterixdb/asterix-app/src/main/java/org/apache/asterix/api/http/server/ClusterApiServlet.java b/asterixdb/asterix-app/src/main/java/org/apache/asterix/api/http/server/ClusterApiServlet.java index bdc1bd7..eaeb082 100644 --- a/asterixdb/asterix-app/src/main/java/org/apache/asterix/api/http/server/ClusterApiServlet.java +++ b/asterixdb/asterix-app/src/main/java/org/apache/asterix/api/http/server/ClusterApiServlet.java @@ -83,7 +83,7 @@ public class ClusterApiServlet extends AbstractServlet { } JSONUtil.writeNode(responseWriter, json); } catch (IllegalArgumentException e) { // NOSONAR - exception not logged or rethrown - response.setStatus(HttpResponseStatus.NOT_FOUND); + sendError(response, HttpResponseStatus.NOT_FOUND); } catch (Exception e) { LOGGER.log(Level.INFO, "exception thrown for " + request, e); response.setStatus(HttpResponseStatus.INTERNAL_SERVER_ERROR); diff --git a/asterixdb/asterix-app/src/main/java/org/apache/asterix/api/http/server/DiagnosticsApiServlet.java b/asterixdb/asterix-app/src/main/java/org/apache/asterix/api/http/server/DiagnosticsApiServlet.java index 9876eed..5e4b376 100644 --- a/asterixdb/asterix-app/src/main/java/org/apache/asterix/api/http/server/DiagnosticsApiServlet.java +++ b/asterixdb/asterix-app/src/main/java/org/apache/asterix/api/http/server/DiagnosticsApiServlet.java @@ -79,10 +79,10 @@ public class DiagnosticsApiServlet extends NodeControllerDetailsApiServlet { } catch (RejectedExecutionException e) { // we must be shutting down, return 503 LOGGER.info("RejectedExecutionException while servicing request; returning 503", e); - sendError(response, HttpResponseStatus.SERVICE_UNAVAILABLE, null); + sendError(response, HttpResponseStatus.SERVICE_UNAVAILABLE); } catch (Exception e) { LOGGER.warn("exception while servicing request; returning 500", e); - sendError(response, HttpResponseStatus.INTERNAL_SERVER_ERROR, e.toString()); + sendError(response, HttpResponseStatus.INTERNAL_SERVER_ERROR); } responseWriter.flush(); } diff --git a/asterixdb/asterix-app/src/main/java/org/apache/asterix/api/http/server/NCUdfApiServlet.java b/asterixdb/asterix-app/src/main/java/org/apache/asterix/api/http/server/NCUdfApiServlet.java index 9efb6f8..8cf70b2 100644 --- a/asterixdb/asterix-app/src/main/java/org/apache/asterix/api/http/server/NCUdfApiServlet.java +++ b/asterixdb/asterix-app/src/main/java/org/apache/asterix/api/http/server/NCUdfApiServlet.java @@ -295,7 +295,8 @@ public class NCUdfApiServlet extends AbstractNCUdfServlet { responseWriter.flush(); } - protected boolean isRequestPermittedForWrite(IServletRequest request, IServletResponse response) { + protected boolean isRequestPermittedForWrite(IServletRequest request, IServletResponse response) + throws IOException { if (!isRequestOnLoopback(request)) { rejectForbidden(response); return false; @@ -313,20 +314,21 @@ public class NCUdfApiServlet extends AbstractNCUdfServlet { } } - protected static void rejectForbidden(IServletResponse response) { - response.setStatus(HttpResponseStatus.FORBIDDEN); - response.writer().write("{ \"error\": \"Forbidden\" }"); + protected void rejectForbidden(IServletResponse response) throws IOException { + // TODO: why this JSON format, do we use this anywhere else? + sendError(response, HttpUtil.ContentType.APPLICATION_JSON, HttpResponseStatus.FORBIDDEN, + "{ \"error\": \"Forbidden\" }"); } @Override - protected void post(IServletRequest request, IServletResponse response) { + protected void post(IServletRequest request, IServletResponse response) throws IOException { if (isRequestPermittedForWrite(request, response)) { handleModification(request, response, LibraryOperation.UPSERT); } } @Override - protected void delete(IServletRequest request, IServletResponse response) { + protected void delete(IServletRequest request, IServletResponse response) throws IOException { if (isRequestPermittedForWrite(request, response)) { handleModification(request, response, LibraryOperation.DELETE); } diff --git a/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/translator/QueryTranslator.java b/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/translator/QueryTranslator.java index eb6c779..f7da31d 100644 --- a/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/translator/QueryTranslator.java +++ b/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/translator/QueryTranslator.java @@ -1248,8 +1248,8 @@ public class QueryTranslator extends AbstractLangTranslator implements IStatemen // allow overriding the type of the closed-field only if CAST modifier is used if (!stmtCreateIndex.hasCastDefaultNull()) { throw new CompilationException(ErrorCode.COMPILATION_ERROR, - indexedElement.getSourceLocation(), "Typed index on \"" + projectPath - + "\" field could be created only for open datatype"); + indexedElement.getSourceLocation(), "Typed index on '" + projectPath + + "' field could be created only for open datatype"); } } } @@ -1631,9 +1631,9 @@ public class QueryTranslator extends AbstractLangTranslator implements IStatemen && !existingIndexKeyFieldTypes.equals(indexKeyFieldTypes)) { throw new CompilationException(ErrorCode.COMPILATION_ERROR, sourceLoc, "Cannot create index " + index.getIndexName() + " , enforced index " - + existingIndex.getIndexName() + " on field \"" - + StringUtils.join(indexKeyFieldNames, ',') - + "\" is already defined with type \"" + existingIndexKeyFieldTypes + "\""); + + existingIndex.getIndexName() + " on field '" + + StringUtils.join(indexKeyFieldNames, ',') + "' is already defined with type '" + + existingIndexKeyFieldTypes + "'"); } } } diff --git a/asterixdb/asterix-app/src/test/java/org/apache/asterix/test/common/ResultExtractor.java b/asterixdb/asterix-app/src/test/java/org/apache/asterix/test/common/ResultExtractor.java index f83ddb2..091fc20 100644 --- a/asterixdb/asterix-app/src/test/java/org/apache/asterix/test/common/ResultExtractor.java +++ b/asterixdb/asterix-app/src/test/java/org/apache/asterix/test/common/ResultExtractor.java @@ -227,7 +227,7 @@ public class ResultExtractor { final String fieldName = fieldNameIter.next(); final ResultField fieldKind = ResultField.ofFieldName(fieldName.split("-")[0]); if (fieldKind == null) { - throw new AsterixException("Unanticipated field \"" + fieldName + "\""); + throw new AsterixException("Unanticipated field '" + fieldName + "'"); } if (!resultFields.contains(fieldKind)) { continue; diff --git a/asterixdb/asterix-app/src/test/resources/metadata/testsuite.xml b/asterixdb/asterix-app/src/test/resources/metadata/testsuite.xml index dc6ae3d..e642922 100644 --- a/asterixdb/asterix-app/src/test/resources/metadata/testsuite.xml +++ b/asterixdb/asterix-app/src/test/resources/metadata/testsuite.xml @@ -498,7 +498,7 @@ <test-case FilePath="exception"> <compilation-unit name="issue_255_create_dataset_error_1"> <output-dir compare="Text">none</output-dir> - <expected-error>ASX1014: Field "name" is not found (in line 34, at column 1)</expected-error> + <expected-error>ASX1014: Field 'name' is not found (in line 34, at column 1)</expected-error> </compilation-unit> </test-case> <test-case FilePath="exception"> @@ -511,56 +511,56 @@ <test-case FilePath="exception"> <compilation-unit name="issue_255_create_feed_error"> <output-dir compare="Text">none</output-dir> - <expected-error>org.json.JSONException: JSONObject["summary"] not found</expected-error> + <expected-error>org.json.JSONException: JSONObject['summary'] not found</expected-error> </compilation-unit> </test-case> --> <!-- This case should be fixed to return a proper message rather than NPE --> <test-case FilePath="exception"> <compilation-unit name="issue_266_create_dataset_error_1"> <output-dir compare="Text">none</output-dir> - <expected-error>ASX1014: Field "point" is not found (in line 34, at column 1)</expected-error> + <expected-error>ASX1014: Field 'point' is not found (in line 34, at column 1)</expected-error> </compilation-unit> </test-case> <test-case FilePath="exception"> <compilation-unit name="issue_266_create_dataset_error_2"> <output-dir compare="Text">none</output-dir> - <expected-error>ASX1021: The primary key field "id" cannot be nullable (in line 34, at column 1)</expected-error> + <expected-error>ASX1021: The primary key field 'id' cannot be nullable (in line 34, at column 1)</expected-error> </compilation-unit> </test-case> <test-case FilePath="exception"> <compilation-unit name="issue_384_create_index_error_1"> <output-dir compare="Text">none</output-dir> - <expected-error>ASX1079: Compilation error: The field "[loc]" which is of type point cannot be indexed using the BTree index. (in line 37, at column 33)</expected-error> + <expected-error>ASX1079: Compilation error: The field '[loc]' which is of type point cannot be indexed using the BTree index. (in line 37, at column 33)</expected-error> </compilation-unit> </test-case> <test-case FilePath="exception"> <compilation-unit name="issue_384_create_index_error_2"> <output-dir compare="Text">none</output-dir> - <expected-error>ASX1079: Compilation error: The field "[age]" which is of type integer cannot be indexed using the RTree index. (in line 37, at column 33)</expected-error> + <expected-error>ASX1079: Compilation error: The field '[age]' which is of type integer cannot be indexed using the RTree index. (in line 37, at column 33)</expected-error> </compilation-unit> </test-case> <test-case FilePath="exception"> <compilation-unit name="issue_384_create_index_error_3"> <output-dir compare="Text">none</output-dir> - <expected-error>ASX1079: Compilation error: The field "[loc]" which is of type point cannot be indexed using the Length Partitioned Keyword index. (in line 37, at column 33)</expected-error> + <expected-error>ASX1079: Compilation error: The field '[loc]' which is of type point cannot be indexed using the Length Partitioned Keyword index. (in line 37, at column 33)</expected-error> </compilation-unit> </test-case> <test-case FilePath="exception"> <compilation-unit name="issue_384_create_index_error_4"> <output-dir compare="Text">none</output-dir> - <expected-error>ASX1079: Compilation error: The field "[loc]" which is of type point cannot be indexed using the Length Partitioned Keyword index. (in line 37, at column 33)</expected-error> + <expected-error>ASX1079: Compilation error: The field '[loc]' which is of type point cannot be indexed using the Length Partitioned Keyword index. (in line 37, at column 33)</expected-error> </compilation-unit> </test-case> <test-case FilePath="exception"> <compilation-unit name="issue_384_create_index_error_5"> <output-dir compare="Text">none</output-dir> - <expected-error>ASX1079: Compilation error: The field "[loc]" which is of type point cannot be indexed using the Length Partitioned N-Gram index. (in line 37, at column 33)</expected-error> + <expected-error>ASX1079: Compilation error: The field '[loc]' which is of type point cannot be indexed using the Length Partitioned N-Gram index. (in line 37, at column 33)</expected-error> </compilation-unit> </test-case> <test-case FilePath="exception"> <compilation-unit name="issue_384_create_index_error_6"> <output-dir compare="Text">none</output-dir> - <expected-error>ASX1079: Compilation error: The field "[loc]" which is of type point cannot be indexed using the Length Partitioned N-Gram index. (in line 37, at column 33)</expected-error> + <expected-error>ASX1079: Compilation error: The field '[loc]' which is of type point cannot be indexed using the Length Partitioned N-Gram index. (in line 37, at column 33)</expected-error> </compilation-unit> </test-case> </test-group> diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/objects/ObjectsQueries.xml b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/objects/ObjectsQueries.xml index 2675c40..bf48a7b 100644 --- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/objects/ObjectsQueries.xml +++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/objects/ObjectsQueries.xml @@ -111,7 +111,7 @@ <compilation-unit name="no_fieldname_constr"> <output-dir compare="Text">no_fieldname_constr</output-dir> <expected-warn>Encountered a cross product join (in line 27, at column 22)</expected-warn> - <expected-warn>Duplicate field name "a" (in line 31, at column 24)</expected-warn> + <expected-warn>Duplicate field name 'a' (in line 31, at column 24)</expected-warn> </compilation-unit> </test-case> <test-case FilePath="objects"> @@ -199,7 +199,7 @@ <test-case FilePath="objects" check-warnings="true"> <compilation-unit name="closed-closed-fieldname-conflict_issue173"> <output-dir compare="Text">closed-closed-fieldname-conflict_issue173</output-dir> - <expected-warn>Duplicate field name "name" (in line 30, at column 16)</expected-warn> + <expected-warn>Duplicate field name 'name' (in line 30, at column 16)</expected-warn> </compilation-unit> </test-case> <test-case FilePath="objects" check-warnings="true"> @@ -227,15 +227,15 @@ <test-case FilePath="objects" check-warnings="true"> <compilation-unit name="object_duplicate_fields"> <output-dir compare="Text">object_duplicate_fields</output-dir> - <expected-warn>Duplicate field name "name" (in line 27, at column 1)</expected-warn> - <expected-warn>Duplicate field name "Name" (in line 29, at column 1)</expected-warn> - <expected-warn>Duplicate field name "name" (in line 31, at column 1)</expected-warn> - <expected-warn>Duplicate field name "name" (in line 22, at column 30)</expected-warn> - <expected-warn>Duplicate field name "id" (in line 22, at column 56)</expected-warn> - <expected-warn>Duplicate field name "f1" (in line 22, at column 70)</expected-warn> - <expected-warn>Duplicate field name "id" (in line 22, at column 56)</expected-warn> - <expected-warn>Duplicate field name "f1" (in line 22, at column 83)</expected-warn> - <expected-warn>Duplicate field name "fname1" (in line 25, at column 45)</expected-warn> + <expected-warn>Duplicate field name 'name' (in line 27, at column 1)</expected-warn> + <expected-warn>Duplicate field name 'Name' (in line 29, at column 1)</expected-warn> + <expected-warn>Duplicate field name 'name' (in line 31, at column 1)</expected-warn> + <expected-warn>Duplicate field name 'name' (in line 22, at column 30)</expected-warn> + <expected-warn>Duplicate field name 'id' (in line 22, at column 56)</expected-warn> + <expected-warn>Duplicate field name 'f1' (in line 22, at column 70)</expected-warn> + <expected-warn>Duplicate field name 'id' (in line 22, at column 56)</expected-warn> + <expected-warn>Duplicate field name 'f1' (in line 22, at column 83)</expected-warn> + <expected-warn>Duplicate field name 'fname1' (in line 25, at column 45)</expected-warn> </compilation-unit> </test-case> </test-group> diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/api/request-param-validation-400-BAD/request-param-validation-400-BAD.01.regexjson b/asterixdb/asterix-app/src/test/resources/runtimets/results/api/request-param-validation-400-BAD/request-param-validation-400-BAD.01.regexjson index f444fa1..ad95b7b 100644 --- a/asterixdb/asterix-app/src/test/resources/runtimets/results/api/request-param-validation-400-BAD/request-param-validation-400-BAD.01.regexjson +++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/api/request-param-validation-400-BAD/request-param-validation-400-BAD.01.regexjson @@ -1,6 +1,6 @@ { "errors": [{ - "code": 1, "msg": "ASX0047: Invalid value for parameter \"format\": foo" } + "code": 1, "msg": "ASX0047: Invalid value for parameter 'format': foo" } ], "status": "fatal", "metrics": { diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/warnings/warnings-limit/warnings-limit.03.regexadm b/asterixdb/asterix-app/src/test/resources/runtimets/results/warnings/warnings-limit/warnings-limit.03.regexadm index d67e7a1..519019a 100644 --- a/asterixdb/asterix-app/src/test/resources/runtimets/results/warnings/warnings-limit/warnings-limit.03.regexadm +++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/warnings/warnings-limit/warnings-limit.03.regexadm @@ -23,7 +23,7 @@ \s*\Q"warnings": [{\E\s* \s*\Q"code": 1,\E\s*\Q"msg": "ASX1107: Unexpected hint: hint. None expected at this location\E[^}]+\Q}\E\s* \s*\Q,{\E\s* -\s*\Q"code": 1,\E\s*\Q"msg": "ASX1006: Duplicate field name \"a\"\E[^}]+\Q}\E\s* +\s*\Q"code": 1,\E\s*\Q"msg": "ASX1006: Duplicate field name 'a'\E[^}]+\Q}\E\s* \s*\Q,{\E\s* \s*\Q"code": 1,\E\s*\Q"msg": "ASX0002: Type mismatch: function isbitset expects its 2nd input parameter to be of type bigint or array, but the actual input type is string\E[^}]+\Q}\E\s* \s*\Q],\E diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/warnings/warnings-limit/warnings-limit.06.regexadm b/asterixdb/asterix-app/src/test/resources/runtimets/results/warnings/warnings-limit/warnings-limit.06.regexadm index 64a3bde..5eeb3df 100644 --- a/asterixdb/asterix-app/src/test/resources/runtimets/results/warnings/warnings-limit/warnings-limit.06.regexadm +++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/warnings/warnings-limit/warnings-limit.06.regexadm @@ -6,7 +6,7 @@ \s*\Q"results": [ {\E.*warnings\Q": [{\E\s* \s*\Q"code": 1,\E\s*\Q"msg": "ASX1107: Unexpected hint: hint. None expected at this location\E[^}]+\Q}\E\s* \s*\Q,{\E\s* -\s*\Q"code": 1,\E\s*\Q"msg": "ASX1006: Duplicate field name \"a\"\E[^}]+\Q}\E\s* +\s*\Q"code": 1,\E\s*\Q"msg": "ASX1006: Duplicate field name 'a'\E[^}]+\Q}\E\s* \s*\Q],\E \s*\Q"status": "success",\E \s*\Q"metrics": {\E diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/warnings/warnings-limit/warnings-limit.08.regexadm b/asterixdb/asterix-app/src/test/resources/runtimets/results/warnings/warnings-limit/warnings-limit.08.regexadm index d67e7a1..519019a 100644 --- a/asterixdb/asterix-app/src/test/resources/runtimets/results/warnings/warnings-limit/warnings-limit.08.regexadm +++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/warnings/warnings-limit/warnings-limit.08.regexadm @@ -23,7 +23,7 @@ \s*\Q"warnings": [{\E\s* \s*\Q"code": 1,\E\s*\Q"msg": "ASX1107: Unexpected hint: hint. None expected at this location\E[^}]+\Q}\E\s* \s*\Q,{\E\s* -\s*\Q"code": 1,\E\s*\Q"msg": "ASX1006: Duplicate field name \"a\"\E[^}]+\Q}\E\s* +\s*\Q"code": 1,\E\s*\Q"msg": "ASX1006: Duplicate field name 'a'\E[^}]+\Q}\E\s* \s*\Q,{\E\s* \s*\Q"code": 1,\E\s*\Q"msg": "ASX0002: Type mismatch: function isbitset expects its 2nd input parameter to be of type bigint or array, but the actual input type is string\E[^}]+\Q}\E\s* \s*\Q],\E diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/testsuite_external_dataset_azure_blob_storage.xml b/asterixdb/asterix-app/src/test/resources/runtimets/testsuite_external_dataset_azure_blob_storage.xml index 2e1a6bf..ae3b2aa 100644 --- a/asterixdb/asterix-app/src/test/resources/runtimets/testsuite_external_dataset_azure_blob_storage.xml +++ b/asterixdb/asterix-app/src/test/resources/runtimets/testsuite_external_dataset_azure_blob_storage.xml @@ -218,28 +218,28 @@ <compilation-unit name="common/include-exclude/bad-name-1"> <placeholder name="adapter" value="AZUREBLOB" /> <output-dir compare="Text">common/include-exclude/bad-name-1</output-dir> - <expected-error>Invalid format for property "exclude1"</expected-error> + <expected-error>Invalid format for property 'exclude1'</expected-error> </compilation-unit> </test-case> <test-case FilePath="external-dataset"> <compilation-unit name="common/include-exclude/bad-name-2"> <placeholder name="adapter" value="AZUREBLOB" /> <output-dir compare="Text">common/include-exclude/bad-name-2</output-dir> - <expected-error>Invalid format for property "exclude#"</expected-error> + <expected-error>Invalid format for property 'exclude#'</expected-error> </compilation-unit> </test-case> <test-case FilePath="external-dataset"> <compilation-unit name="common/include-exclude/bad-name-3"> <placeholder name="adapter" value="AZUREBLOB" /> <output-dir compare="Text">common/include-exclude/bad-name-3</output-dir> - <expected-error>Invalid format for property "exclude#hello"</expected-error> + <expected-error>Invalid format for property 'exclude#hello'</expected-error> </compilation-unit> </test-case> <test-case FilePath="external-dataset"> <compilation-unit name="common/include-exclude/both"> <placeholder name="adapter" value="AZUREBLOB" /> <output-dir compare="Text">common/include-exclude/both</output-dir> - <expected-error>The parameters "include" and "exclude" cannot be provided at the same time</expected-error> + <expected-error>The parameters 'include' and 'exclude' cannot be provided at the same time</expected-error> </compilation-unit> </test-case> <test-case FilePath="external-dataset"> diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/testsuite_external_dataset_s3.xml b/asterixdb/asterix-app/src/test/resources/runtimets/testsuite_external_dataset_s3.xml index a8786e2..12a8ae2 100644 --- a/asterixdb/asterix-app/src/test/resources/runtimets/testsuite_external_dataset_s3.xml +++ b/asterixdb/asterix-app/src/test/resources/runtimets/testsuite_external_dataset_s3.xml @@ -305,28 +305,28 @@ <compilation-unit name="common/include-exclude/bad-name-1"> <placeholder name="adapter" value="S3" /> <output-dir compare="Text">common/include-exclude/bad-name-1</output-dir> - <expected-error>Invalid format for property "exclude1"</expected-error> + <expected-error>Invalid format for property 'exclude1'</expected-error> </compilation-unit> </test-case> <test-case FilePath="external-dataset"> <compilation-unit name="common/include-exclude/bad-name-2"> <placeholder name="adapter" value="S3" /> <output-dir compare="Text">common/include-exclude/bad-name-2</output-dir> - <expected-error>Invalid format for property "exclude#"</expected-error> + <expected-error>Invalid format for property 'exclude#'</expected-error> </compilation-unit> </test-case> <test-case FilePath="external-dataset"> <compilation-unit name="common/include-exclude/bad-name-3"> <placeholder name="adapter" value="S3" /> <output-dir compare="Text">common/include-exclude/bad-name-3</output-dir> - <expected-error>Invalid format for property "exclude#hello"</expected-error> + <expected-error>Invalid format for property 'exclude#hello'</expected-error> </compilation-unit> </test-case> <test-case FilePath="external-dataset"> <compilation-unit name="common/include-exclude/both"> <placeholder name="adapter" value="S3" /> <output-dir compare="Text">common/include-exclude/both</output-dir> - <expected-error>The parameters "include" and "exclude" cannot be provided at the same time</expected-error> + <expected-error>The parameters 'include' and 'exclude' cannot be provided at the same time</expected-error> </compilation-unit> </test-case> <test-case FilePath="external-dataset"> diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/testsuite_it_sqlpp.xml b/asterixdb/asterix-app/src/test/resources/runtimets/testsuite_it_sqlpp.xml index 7667bb4..b922fe4 100644 --- a/asterixdb/asterix-app/src/test/resources/runtimets/testsuite_it_sqlpp.xml +++ b/asterixdb/asterix-app/src/test/resources/runtimets/testsuite_it_sqlpp.xml @@ -72,7 +72,7 @@ <expected-error>ASX3042: Unsupported function language badType</expected-error> <expected-error>ASX1117: Cannot find library with name testlib</expected-error> <expected-error>ASX0049: Parameter(s) type must be specified</expected-error> - <expected-error>ASX0047: Invalid value for parameter \"data\": Attribute</expected-error> + <expected-error>ASX0047: Invalid value for parameter 'data': Attribute</expected-error> <expected-error>ASX0049: Parameter(s) data must be specified</expected-error> </compilation-unit> </test-case> diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/testsuite_sqlpp.xml b/asterixdb/asterix-app/src/test/resources/runtimets/testsuite_sqlpp.xml index 0bfbcf2..0b98369 100644 --- a/asterixdb/asterix-app/src/test/resources/runtimets/testsuite_sqlpp.xml +++ b/asterixdb/asterix-app/src/test/resources/runtimets/testsuite_sqlpp.xml @@ -62,31 +62,31 @@ <test-case FilePath="api"> <compilation-unit name="request-param-validation"> <output-dir compare="Text">request-param-validation</output-dir> - <expected-error>Invalid value for parameter "format": foo</expected-error> - <expected-error>Invalid value for parameter "pretty": bar</expected-error> - <expected-error>Invalid value for parameter "plan-format": blah</expected-error> - <expected-error>Invalid value for parameter "max-result-reads": foo</expected-error> - <expected-error>Invalid value for parameter "max-result-reads": 9999999999999999999999999999999999999999</expected-error> - <expected-error>Invalid value for parameter "max-warnings": baz</expected-error> - <expected-error>Invalid value for parameter "max-warnings": 1.5</expected-error> - <expected-error>Invalid value for parameter "mode": asyn</expected-error> - <expected-error>Invalid value for parameter "timeout": 12</expected-error> - <expected-error>Invalid value for parameter "args": 12</expected-error> + <expected-error>Invalid value for parameter 'format': foo</expected-error> + <expected-error>Invalid value for parameter 'pretty': bar</expected-error> + <expected-error>Invalid value for parameter 'plan-format': blah</expected-error> + <expected-error>Invalid value for parameter 'max-result-reads': foo</expected-error> + <expected-error>Invalid value for parameter 'max-result-reads': 9999999999999999999999999999999999999999</expected-error> + <expected-error>Invalid value for parameter 'max-warnings': baz</expected-error> + <expected-error>Invalid value for parameter 'max-warnings': 1.5</expected-error> + <expected-error>Invalid value for parameter 'mode': asyn</expected-error> + <expected-error>Invalid value for parameter 'timeout': 12</expected-error> + <expected-error>Invalid value for parameter 'args': 12</expected-error> <expected-error>Unable to process JSON content in request</expected-error> <expected-error>Unable to process JSON content in request</expected-error> - <expected-error>Invalid value for parameter "format": foo</expected-error> - <expected-error>Invalid value for parameter "pretty": bar</expected-error> - <expected-error>Invalid value for parameter "plan-format": blah</expected-error> - <expected-error>Invalid value for parameter "max-result-reads": foo</expected-error> - <expected-error>Invalid value for parameter "max-warnings": baz</expected-error> - <expected-error>Invalid value for parameter "mode": asyn</expected-error> - <expected-error>Invalid value for parameter "args": 12</expected-error> + <expected-error>Invalid value for parameter 'format': foo</expected-error> + <expected-error>Invalid value for parameter 'pretty': bar</expected-error> + <expected-error>Invalid value for parameter 'plan-format': blah</expected-error> + <expected-error>Invalid value for parameter 'max-result-reads': foo</expected-error> + <expected-error>Invalid value for parameter 'max-warnings': baz</expected-error> + <expected-error>Invalid value for parameter 'mode': asyn</expected-error> + <expected-error>Invalid value for parameter 'args': 12</expected-error> <expected-error>Unable to process JSON content in request</expected-error> <expected-error>Unable to process JSON content in request</expected-error> - <expected-error>Invalid value for parameter "profile": true</expected-error> - <expected-error>Invalid value for parameter "profile": true</expected-error> - <expected-error>Invalid value for parameter "profile": foo</expected-error> - <expected-error>Invalid value for parameter "profile": foo</expected-error> + <expected-error>Invalid value for parameter 'profile': true</expected-error> + <expected-error>Invalid value for parameter 'profile': true</expected-error> + <expected-error>Invalid value for parameter 'profile': foo</expected-error> + <expected-error>Invalid value for parameter 'profile': foo</expected-error> <source-location>false</source-location> </compilation-unit> </test-case> @@ -232,21 +232,21 @@ <test-case FilePath="flwor" check-warnings="true"> <compilation-unit name="query-ASTERIXDB-2446"> <output-dir compare="Text">query-ASTERIXDB-2446</output-dir> - <expected-error>ASX0013: Duplicate field name "a"</expected-error> - <expected-warn>Duplicate field name "c" (in line 28, at column 84)</expected-warn> - <expected-warn>Duplicate field name "e" (in line 28, at column 116)</expected-warn> + <expected-error>ASX0013: Duplicate field name 'a'</expected-error> + <expected-warn>Duplicate field name 'c' (in line 28, at column 84)</expected-warn> + <expected-warn>Duplicate field name 'e' (in line 28, at column 116)</expected-warn> </compilation-unit> </test-case> <test-case FilePath="flwor"> <compilation-unit name="query-ASTERIXDB-2446-2"> <output-dir compare="Text">query-ASTERIXDB-883</output-dir> - <expected-error>ASX0013: Duplicate field name "a" (in line 27, at column 20)</expected-error> - <expected-error>ASX0013: Duplicate field name "b" (in line 27, at column 20)</expected-error> - <expected-error>ASX0013: Duplicate field name "c" (in line 27, at column 11)</expected-error> - <expected-error>ASX0013: Duplicate field name "d" (in line 27, at column 11)</expected-error> - <expected-error>ASX0013: Duplicate field name "e" (in line 27, at column 14)</expected-error> - <expected-error>ASX0013: Duplicate field name "f" (in line 27, at column 11)</expected-error> - <expected-error>ASX0013: Duplicate field name "g" (in line 27, at column 11)</expected-error> + <expected-error>ASX0013: Duplicate field name 'a' (in line 27, at column 20)</expected-error> + <expected-error>ASX0013: Duplicate field name 'b' (in line 27, at column 20)</expected-error> + <expected-error>ASX0013: Duplicate field name 'c' (in line 27, at column 11)</expected-error> + <expected-error>ASX0013: Duplicate field name 'd' (in line 27, at column 11)</expected-error> + <expected-error>ASX0013: Duplicate field name 'e' (in line 27, at column 14)</expected-error> + <expected-error>ASX0013: Duplicate field name 'f' (in line 27, at column 11)</expected-error> + <expected-error>ASX0013: Duplicate field name 'g' (in line 27, at column 11)</expected-error> </compilation-unit> </test-case> <test-case FilePath="flwor"> @@ -4158,7 +4158,7 @@ <compilation-unit name="bad-type-ddl"> <output-dir compare="Text">none</output-dir> <expected-error>ASX1079: Compilation error: Reserved type name $x</expected-error> - <expected-error>ASX0013: Duplicate field name "c" (in line 29, at column 19)</expected-error> + <expected-error>ASX0013: Duplicate field name 'c' (in line 29, at column 19)</expected-error> </compilation-unit> </test-case> <test-case FilePath="ddl"> @@ -4172,13 +4172,13 @@ <expected-error>ASX1082: Cannot find datatype with name test.$d$t$i$Cust1</expected-error> <expected-error>ASX1082: Cannot find datatype with name test.$d$t$i$Cust2</expected-error> <expected-error>ASX1082: Cannot find datatype with name my_unknown_type</expected-error> - <expected-error>ASX0013: Duplicate field name "c_name" (in line 25, at column 22)</expected-error> + <expected-error>ASX0013: Duplicate field name 'c_name' (in line 25, at column 22)</expected-error> </compilation-unit> </test-case> <test-case FilePath="ddl"> <compilation-unit name="drop-primary-index"> <output-dir compare="Text">drop-primary-index</output-dir> - <expected-error>Cannot drop index "ds". Drop dataset "ds" to remove this index</expected-error> + <expected-error>Cannot drop index 'ds'. Drop dataset 'ds' to remove this index</expected-error> </compilation-unit> </test-case> <test-case FilePath="ddl" check-warnings="true"> @@ -4197,89 +4197,89 @@ <test-case FilePath="ddl"> <compilation-unit name="invalid-dataverse-name"> <output-dir compare="Text">none</output-dir> - <expected-error>ASX1115: Invalid name for a database object: ""</expected-error> - <expected-error>ASX1115: Invalid name for a database object: " a"</expected-error> - <expected-error>ASX1115: Invalid name for a database object: " invalid"</expected-error> + <expected-error>ASX1115: Invalid name for a database object: ''</expected-error> + <expected-error>ASX1115: Invalid name for a database object: ' a'</expected-error> + <expected-error>ASX1115: Invalid name for a database object: ' invalid'</expected-error> <expected-error>ASX1079: Compilation error: Invalid operation - Cannot create dataverse: asterix</expected-error> <expected-error>ASX1079: Compilation error: Invalid operation - Cannot create dataverse: algebricks</expected-error> - <expected-error>ASX1115: Invalid name for a database object: "" (in line 24, at column 16)</expected-error> - <expected-error>ASX1115: Invalid name for a database object: "a/b" (in line 27, at column 16)</expected-error> + <expected-error>ASX1115: Invalid name for a database object: '' (in line 24, at column 16)</expected-error> + <expected-error>ASX1115: Invalid name for a database object: 'a/b' (in line 27, at column 16)</expected-error> </compilation-unit> </test-case> <test-case FilePath="ddl"> <compilation-unit name="invalid-dataset-name"> <output-dir compare="Text">none</output-dir> - <expected-error>ASX1115: Invalid name for a database object: ""</expected-error> - <expected-error>ASX1115: Invalid name for a database object: " a"</expected-error> - <expected-error>ASX1115: Invalid name for a database object: " invalid"</expected-error> - <expected-error>ASX1115: Invalid name for a database object: "a/b" (in line 29, at column 16)</expected-error> - <expected-error>ASX1115: Invalid name for a database object: "c/d" (in line 31, at column 14)</expected-error> + <expected-error>ASX1115: Invalid name for a database object: ''</expected-error> + <expected-error>ASX1115: Invalid name for a database object: ' a'</expected-error> + <expected-error>ASX1115: Invalid name for a database object: ' invalid'</expected-error> + <expected-error>ASX1115: Invalid name for a database object: 'a/b' (in line 29, at column 16)</expected-error> + <expected-error>ASX1115: Invalid name for a database object: 'c/d' (in line 31, at column 14)</expected-error> </compilation-unit> </test-case> <test-case FilePath="ddl"> <compilation-unit name="invalid-feed-name"> <output-dir compare="Text">none</output-dir> - <expected-error>ASX1115: Invalid name for a database object: ""</expected-error> - <expected-error>ASX1115: Invalid name for a database object: " a"</expected-error> - <expected-error>ASX1115: Invalid name for a database object: " invalid"</expected-error> - <expected-error>ASX1115: Invalid name for a database object: "a/b" (in line 34, at column 13)</expected-error> - <expected-error>ASX1115: Invalid name for a database object: "c/d" (in line 42, at column 11)</expected-error> + <expected-error>ASX1115: Invalid name for a database object: ''</expected-error> + <expected-error>ASX1115: Invalid name for a database object: ' a'</expected-error> + <expected-error>ASX1115: Invalid name for a database object: ' invalid'</expected-error> + <expected-error>ASX1115: Invalid name for a database object: 'a/b' (in line 34, at column 13)</expected-error> + <expected-error>ASX1115: Invalid name for a database object: 'c/d' (in line 42, at column 11)</expected-error> </compilation-unit> </test-case> <test-case FilePath="ddl"> <compilation-unit name="invalid-feed-policy-name"> <output-dir compare="Text">none</output-dir> - <expected-error>ASX1115: Invalid name for a database object: ""</expected-error> - <expected-error>ASX1115: Invalid name for a database object: " a"</expected-error> - <expected-error>ASX1115: Invalid name for a database object: "a/b" (in line 29, at column 1)</expected-error> - <expected-error>ASX1115: Invalid name for a database object: "c/d" (in line 32, at column 23)</expected-error> + <expected-error>ASX1115: Invalid name for a database object: ''</expected-error> + <expected-error>ASX1115: Invalid name for a database object: ' a'</expected-error> + <expected-error>ASX1115: Invalid name for a database object: 'a/b' (in line 29, at column 1)</expected-error> + <expected-error>ASX1115: Invalid name for a database object: 'c/d' (in line 32, at column 23)</expected-error> </compilation-unit> </test-case> <test-case FilePath="ddl"> <compilation-unit name="invalid-index-name"> <output-dir compare="Text">none</output-dir> - <expected-error>ASX1115: Invalid name for a database object: ""</expected-error> - <expected-error>ASX1115: Invalid name for a database object: " a"</expected-error> - <expected-error>ASX1115: Invalid name for a database object: " invalid"</expected-error> - <expected-error>ASX1115: Invalid name for a database object: "a/b" (in line 29, at column 19)</expected-error> - <expected-error>ASX1115: Invalid name for a database object: "c/d" (in line 33, at column 12)</expected-error> + <expected-error>ASX1115: Invalid name for a database object: ''</expected-error> + <expected-error>ASX1115: Invalid name for a database object: ' a'</expected-error> + <expected-error>ASX1115: Invalid name for a database object: ' invalid'</expected-error> + <expected-error>ASX1115: Invalid name for a database object: 'a/b' (in line 29, at column 19)</expected-error> + <expected-error>ASX1115: Invalid name for a database object: 'c/d' (in line 33, at column 12)</expected-error> </compilation-unit> </test-case> <test-case FilePath="ddl"> <compilation-unit name="invalid-nodegroup-name"> <output-dir compare="Text">none</output-dir> - <expected-error>ASX1115: Invalid name for a database object: ""</expected-error> - <expected-error>ASX1115: Invalid name for a database object: " a"</expected-error> + <expected-error>ASX1115: Invalid name for a database object: ''</expected-error> + <expected-error>ASX1115: Invalid name for a database object: ' a'</expected-error> </compilation-unit> </test-case> <test-case FilePath="ddl"> <compilation-unit name="invalid-type-name"> <output-dir compare="Text">none</output-dir> - <expected-error>ASX1115: Invalid name for a database object: ""</expected-error> - <expected-error>ASX1115: Invalid name for a database object: " a"</expected-error> - <expected-error>ASX1115: Invalid name for a database object: " invalid"</expected-error> - <expected-error>ASX1115: Invalid name for a database object: "a/b" (in line 29, at column 13)</expected-error> - <expected-error>ASX1115: Invalid name for a database object: "c/d" (in line 33, at column 11)</expected-error> + <expected-error>ASX1115: Invalid name for a database object: ''</expected-error> + <expected-error>ASX1115: Invalid name for a database object: ' a'</expected-error> + <expected-error>ASX1115: Invalid name for a database object: ' invalid'</expected-error> + <expected-error>ASX1115: Invalid name for a database object: 'a/b' (in line 29, at column 13)</expected-error> + <expected-error>ASX1115: Invalid name for a database object: 'c/d' (in line 33, at column 11)</expected-error> </compilation-unit> </test-case> <test-case FilePath="ddl"> <compilation-unit name="invalid-udf-name"> <output-dir compare="Text">none</output-dir> - <expected-error>ASX1115: Invalid name for a database object: ""</expected-error> - <expected-error>ASX1115: Invalid name for a database object: " a"</expected-error> - <expected-error>ASX1115: Invalid name for a database object: " invalid"</expected-error> - <expected-error>ASX1115: Invalid name for a database object: "a/b" (in line 29, at column 17)</expected-error> - <expected-error>ASX1115: Invalid name for a database object: "c/d" (in line 33, at column 15)</expected-error> + <expected-error>ASX1115: Invalid name for a database object: ''</expected-error> + <expected-error>ASX1115: Invalid name for a database object: ' a'</expected-error> + <expected-error>ASX1115: Invalid name for a database object: ' invalid'</expected-error> + <expected-error>ASX1115: Invalid name for a database object: 'a/b' (in line 29, at column 17)</expected-error> + <expected-error>ASX1115: Invalid name for a database object: 'c/d' (in line 33, at column 15)</expected-error> </compilation-unit> </test-case> <test-case FilePath="ddl"> <compilation-unit name="invalid-view-name"> <output-dir compare="Text">none</output-dir> - <expected-error>ASX1115: Invalid name for a database object: "" (in line 29, at column 1)</expected-error> - <expected-error>ASX1115: Invalid name for a database object: " a" (in line 29, at column 1)</expected-error> - <expected-error>ASX1115: Invalid name for a database object: " invalid" (in line 29, at column 1)</expected-error> - <expected-error>ASX1115: Invalid name for a database object: "a/b" (in line 29, at column 13)</expected-error> - <expected-error>ASX1115: Invalid name for a database object: "c/d" (in line 32, at column 11)</expected-error> + <expected-error>ASX1115: Invalid name for a database object: '' (in line 29, at column 1)</expected-error> + <expected-error>ASX1115: Invalid name for a database object: ' a' (in line 29, at column 1)</expected-error> + <expected-error>ASX1115: Invalid name for a database object: ' invalid' (in line 29, at column 1)</expected-error> + <expected-error>ASX1115: Invalid name for a database object: 'a/b' (in line 29, at column 13)</expected-error> + <expected-error>ASX1115: Invalid name for a database object: 'c/d' (in line 32, at column 11)</expected-error> </compilation-unit> </test-case> <test-case FilePath="ddl"> @@ -4328,7 +4328,7 @@ <expected-error>CAST modifier is only allowed for B-Tree indexes</expected-error> <expected-error>CAST modifier cannot be specified together with ENFORCED</expected-error> <expected-error>CAST modifier is used without specifying the type of the indexed field</expected-error> - <expected-error>Typed index on "[typed_f2]" field could be created only for open datatype</expected-error> + <expected-error>Typed index on '[typed_f2]' field could be created only for open datatype</expected-error> <expected-error>Parameter invalid_date cannot be set</expected-error> </compilation-unit> </test-case> @@ -4592,8 +4592,8 @@ <test-case FilePath="dml"> <compilation-unit name="load-with-autogenerated-no-field"> <output-dir compare="Text">load-with-autogenerated-no-field</output-dir> - <expected-error>ASX1014: Field "not_id" is not found</expected-error> - <expected-error>ASX1014: Field "not_id" is not found</expected-error> + <expected-error>ASX1014: Field 'not_id' is not found</expected-error> + <expected-error>ASX1014: Field 'not_id' is not found</expected-error> </compilation-unit> </test-case> <test-case FilePath="dml"> @@ -5110,8 +5110,8 @@ <test-case FilePath="dml"> <compilation-unit name="load-with-autogenerated-no-field"> <output-dir compare="Text">load-with-autogenerated-no-field</output-dir> - <expected-error>ASX1014: Field "not_id" is not found</expected-error> - <expected-error>ASX1014: Field "not_id" is not found</expected-error> + <expected-error>ASX1014: Field 'not_id' is not found</expected-error> + <expected-error>ASX1014: Field 'not_id' is not found</expected-error> </compilation-unit> </test-case> <test-case FilePath="dml"> @@ -6985,7 +6985,7 @@ <test-case FilePath="misc"> <compilation-unit name="partition-by-nonexistent-field"> <output-dir compare="Text">partition-by-nonexistent-field</output-dir> - <expected-error>Field "id" is not found</expected-error> + <expected-error>Field 'id' is not found</expected-error> <expected-error>Cannot find dataset with name testds in dataverse test</expected-error> <expected-error>Cannot find dataset testds in dataverse test nor an alias with name testds</expected-error> </compilation-unit> @@ -7274,7 +7274,7 @@ <test-case FilePath="index/validations"> <compilation-unit name="repetitive-keys"> <output-dir compare="Text">repetitive-keys</output-dir> - <expected-error>Cannot create index with the same field "[value]" specified more than once.</expected-error> + <expected-error>Cannot create index with the same field '[value]' specified more than once.</expected-error> </compilation-unit> </test-case> </test-group> @@ -7284,13 +7284,13 @@ <test-case FilePath="open-index-enforced/error-checking"> <compilation-unit name="enforced-field-name-collision"> <output-dir compare="Text">enforced-field-name-collision</output-dir> - <expected-error>Cannot create enforced index on "[value]" field. The field is closed type.</expected-error> + <expected-error>Cannot create enforced index on '[value]' field. The field is closed type.</expected-error> </compilation-unit> </test-case> <test-case FilePath="open-index-enforced/error-checking"> <compilation-unit name="enforced-field-type-collision"> <output-dir compare="Text">enforced-field-type-collision</output-dir> - <expected-error>Cannot create enforced index on "[value]" field. The field is closed type.</expected-error> + <expected-error>Cannot create enforced index on '[value]' field. The field is closed type.</expected-error> </compilation-unit> </test-case> <test-case FilePath="open-index-enforced/error-checking"> @@ -7302,31 +7302,31 @@ <test-case FilePath="open-index-enforced/error-checking"> <compilation-unit name="missing-optionality"> <output-dir compare="Text">missing-optionality</output-dir> - <expected-error>Cannot create enforced index on "[value]" field with non-optional type</expected-error> + <expected-error>Cannot create enforced index on '[value]' field with non-optional type</expected-error> </compilation-unit> </test-case> <test-case FilePath="open-index-enforced/error-checking"> <compilation-unit name="index-on-closed-type"> <output-dir compare="Text">index-on-closed-type</output-dir> - <expected-error>ASX1014: Field "value" is not found (in line 33, at column 34)</expected-error> + <expected-error>ASX1014: Field 'value' is not found (in line 33, at column 34)</expected-error> </compilation-unit> </test-case> <test-case FilePath="open-index-enforced/error-checking"> <compilation-unit name="index-type-collision"> <output-dir compare="Text">index-type-collision</output-dir> - <expected-error>Cannot create index testIdx2 , enforced index testIdx1 on field "[value]" is already defined with type "[integer]"</expected-error> + <expected-error>Cannot create index testIdx2 , enforced index testIdx1 on field '[value]' is already defined with type '[integer]'</expected-error> </compilation-unit> </test-case> <test-case FilePath="open-index-enforced/error-checking"> <compilation-unit name="index-type-promotion-collision"> <output-dir compare="Text">index-type-promotion-collision</output-dir> - <expected-error>Cannot create index testIdx2 , enforced index testIdx1 on field "[value]" is already defined with type "[bigint]"</expected-error> + <expected-error>Cannot create index testIdx2 , enforced index testIdx1 on field '[value]' is already defined with type '[bigint]'</expected-error> </compilation-unit> </test-case> <test-case FilePath="open-index-enforced/error-checking"> <compilation-unit name="object-type-collision"> <output-dir compare="Text">object-type-collision</output-dir> - <expected-error>ASX1051: Cannot create enforced index on "[value]" field. The field is closed type.</expected-error> + <expected-error>ASX1051: Cannot create enforced index on '[value]' field. The field is closed type.</expected-error> </compilation-unit> </test-case> </test-group> @@ -8142,7 +8142,7 @@ <test-case FilePath="array-index/error-handling"> <compilation-unit name="index-on-closed-array"> <output-dir compare="Text">index-on-closed-array</output-dir> - <expected-error>ASX1014: Field "date" is not found</expected-error> + <expected-error>ASX1014: Field 'date' is not found</expected-error> <source-location>false</source-location> </compilation-unit> </test-case> @@ -8587,7 +8587,7 @@ <test-case FilePath="nestrecords"> <compilation-unit name="nested-optional-pk"> <output-dir compare="Text">nested-optional-pk</output-dir> - <expected-error>ASX1021: The primary key field "nested.id" cannot be nullable</expected-error> + <expected-error>ASX1021: The primary key field 'nested.id' cannot be nullable</expected-error> </compilation-unit> </test-case> <test-case FilePath="nestrecords"> @@ -9660,13 +9660,13 @@ <!-- Fail sporadically <test-case FilePath="range-hints"> <compilation-unit name="order-by-exception_01"> <output-dir compare="Text">order-by</output-dir> - <expected-error>org.json.JSONException: JSONObject["summary"] not found</expected-error> + <expected-error>org.json.JSONException: JSONObject['summary'] not found</expected-error> </compilation-unit> </test-case> <test-case FilePath="range-hints"> <compilation-unit name="order-by-exception_02"> <output-dir compare="Text">order-by</output-dir> - <expected-error>org.json.JSONException: JSONObject["summary"] not found</expected-error> + <expected-error>org.json.JSONException: JSONObject['summary'] not found</expected-error> </compilation-unit> </test-case> --> </test-group> @@ -10535,8 +10535,8 @@ <test-case FilePath="string"> <compilation-unit name="like_03_negative"> <output-dir compare="Text">like_03_negative</output-dir> - <expected-error>Invalid pattern "__\c" for LIKE (in line 21, at column 11)</expected-error> - <expected-error>Invalid pattern "%\" for LIKE (in line 21, at column 18)</expected-error> + <expected-error>Invalid pattern '__\c' for LIKE (in line 21, at column 11)</expected-error> + <expected-error>Invalid pattern '%\' for LIKE (in line 21, at column 18)</expected-error> </compilation-unit> </test-case> <test-case FilePath="string"> @@ -13422,10 +13422,10 @@ <expected-error><![CDATA[ASX1001: Syntax error: In line 25 >>create view test.v1(r bigint, a [bigint]) default null as<< Encountered "[" at column 33]]></expected-error> <expected-error>ASX1092: Parameter date_illegal_property_name cannot be set (in line 25, at column 1)</expected-error> <expected-error><![CDATA[ASX1001: Syntax error: In line 25 >>create view test.v1(r bigint) as<< Encountered "as" at column 31]]></expected-error> - <expected-error><![CDATA[ASX1014: Field "unknown_field" is not found (in line 25, at column 1)]]></expected-error> - <expected-error><![CDATA[ASX1014: Field "unknown_field_2" is not found (in line 25, at column 1)]]></expected-error> + <expected-error><![CDATA[ASX1014: Field 'unknown_field' is not found (in line 25, at column 1)]]></expected-error> + <expected-error><![CDATA[ASX1014: Field 'unknown_field_2' is not found (in line 25, at column 1)]]></expected-error> <expected-error><![CDATA[ASX1001: Syntax error: In line 28 >> as select r from range(1,2) r;<< Encountered "as" at column 3]]></expected-error> - <expected-error><![CDATA[ASX0013: Duplicate field name "r" (in line 25, at column 20)]]></expected-error> + <expected-error><![CDATA[ASX0013: Duplicate field name 'r' (in line 25, at column 20)]]></expected-error> <expected-error><![CDATA[ASX1167: Cannot change primary key of view test1.employee_v1 (in line 38, at column 1)]]></expected-error> <expected-error><![CDATA[ASX1162: Invalid primary key definition (in line 25, at column 1)]]></expected-error> <expected-error><![CDATA[ASX1162: Invalid primary key definition (in line 26, at column 1)]]></expected-error> @@ -15303,14 +15303,14 @@ <test-case FilePath="ddl-with-clause"> <compilation-unit name="missing-non-optional"> <output-dir compare="Text">missing-non-optional</output-dir> - <expected-error>ASX1061: Field "merge-policy.name" in the with clause cannot be null or missing</expected-error> + <expected-error>ASX1061: Field 'merge-policy.name' in the with clause cannot be null or missing</expected-error> <source-location>false</source-location> </compilation-unit> </test-case> <test-case FilePath="ddl-with-clause"> <compilation-unit name="type-mismatch"> <output-dir compare="Text">type-mismatch</output-dir> - <expected-error>ASX1060: Field "merge-policy.parameters.max-mergable-component-size" in the with clause must be of type bigint, but found string</expected-error> + <expected-error>ASX1060: Field 'merge-policy.parameters.max-mergable-component-size' in the with clause must be of type bigint, but found string</expected-error> <source-location>false</source-location> </compilation-unit> </test-case> @@ -15324,7 +15324,7 @@ <test-case FilePath="ddl-with-clause"> <compilation-unit name="unsupported-subfield"> <output-dir compare="Text">unsupported-subfield</output-dir> - <expected-error>ASX1097: Subfield(s) [unknown-subfield] in "merge-policy" unsupported in the with clause</expected-error> + <expected-error>ASX1097: Subfield(s) [unknown-subfield] in 'merge-policy' unsupported in the with clause</expected-error> <source-location>false</source-location> </compilation-unit> </test-case> diff --git a/asterixdb/asterix-common/src/main/resources/asx_errormsg/en.properties b/asterixdb/asterix-common/src/main/resources/asx_errormsg/en.properties index faaf8d5..f5ef79d 100644 --- a/asterixdb/asterix-common/src/main/resources/asx_errormsg/en.properties +++ b/asterixdb/asterix-common/src/main/resources/asx_errormsg/en.properties @@ -37,7 +37,7 @@ 3,1003 = Type incompatibility: function %1$s gets incompatible input values: %2$s and %3$s 4,1004 = Unsupported type: %1$s cannot process input type %2$s 5,1005 = Invalid item type: function %1$s cannot process item type %2$s in an input array (or multiset) -13,1006 = Duplicate field name \"%1$s\" +13,1006 = Duplicate field name '%1$s' 1009 = A returning expression cannot contain dataset access 37,1091 = Type mismatch: expected value of type %1$s, but got the value of type %2$s 51 = Incomparable input types: %1$s and %2$s @@ -64,7 +64,7 @@ 25 = Polygon must have at least 3 points 26 = %1$s can not be an instance of polygon 27 = Operation not supported -28 = Invalid duration \"%1$s\" +28 = Invalid duration '%1$s' 29 = Unknown duration unit %1$s 30 = Request timed out and will be cancelled 31 = Invalid type-casting math function: %1$s for converting %2$s to %3$s @@ -76,15 +76,15 @@ 39 = Expected integer value, got %1$s 40 = No statement provided 41 = Request %1$s has been cancelled -42 = %1$s: \"%2$s\" is not a TPC-DS table name +42 = %1$s: '%2$s' is not a TPC-DS table name 43 = Value out of range, function %1$s expects its %2$s input parameter value to be between %3$s and %4$s, received %5$s 44 = %1$s statement is not supported in read-only mode 45 = Invalid value: function %1$s expects its %2$s input parameter to be an integer value, got %3$s -46 = Invalid pattern \"%1$s\" for LIKE -47 = Invalid value for parameter \"%1$s\": %2$s +46 = Invalid pattern '%1$s' for LIKE +47 = Invalid value for parameter '%1$s': %2$s 48 = Unable to process JSON content in request 49 = Parameter(s) %1$s must be specified -50 = Invalid parameter \"%1$s\" +50 = Invalid parameter '%1$s' #51 is used 52 = Illegal state. %1$s 53 = Unsupported Parquet type '%1$s' @@ -107,14 +107,14 @@ 1011 = Unknown dataset type %1$s 1012 = Unknown index type %1$s 1013 = Cannot use %1$s fields as a key for the %2$s index. The index can only support keys of size %3$s -1014 = Field \"%1$s\" is not found -1015 = Index of type %1$s is not supported for dataset \"%2$s\" since it has composite primary keys +1014 = Field '%1$s' is not found +1015 = Index of type %1$s is not supported for dataset '%2$s' since it has composite primary keys 1016 = Index of type %1$s is not supported for dataset of type %2$s -1017 = The filter field \"%1$s\" cannot be an optional field +1017 = The filter field '%1$s' cannot be an optional field 1018 = Field of type %1$s cannot be used as a filter field 1019 = Cannot autogenerate a composite %1$s key 1020 = Cannot autogenerate a %1$s key for %1$s key of type %2$s. Autogenerated %1$s keys must be of type %3$s -1021 = The %1$s key field \"%2$s\" cannot be nullable +1021 = The %1$s key field '%2$s' cannot be nullable 1022 = Field of type %1$s cannot be used as a %2$s key field 1023 = Cannot drop dataset %1$s since it is connected to active entity: %2$s #1024 is no longer used @@ -134,7 +134,7 @@ 1038 = Illegal state. %1$s 1039 = Two-phase locking violation -- locks can not be acquired after unlocking 1040 = Dataset id space is exhausted -1041 = Cannot create enforced index on \"%1$s\" field with non-optional type +1041 = Cannot create enforced index on '%1$s' field with non-optional type 1042 = Cannot create non-enforced typed index of this kind: %1$s 1043 = Cannot use %1$s fields as key for the R-tree index. There can be only one field as a key for the R-tree index. 1044 = Communication-related exception occurred during the execution of a remote method call @@ -144,8 +144,8 @@ 1048 = Metadata lock cannot be downgraded! because it was not acquired before 1049 = Metadata lock cannot be acquired for %1$s since it is already acquired for %2$s 1050 = Cannot find dataset with name %1$s in dataverse %2$s -1051 = Cannot create enforced index on \"%1$s\" field. The field is closed type. -1052 = Cannot create index with the same field \"%1$s\" specified more than once. +1051 = Cannot create enforced index on '%1$s' field. The field is closed type. +1052 = Cannot create index with the same field '%1$s' specified more than once. 1053 = Cannot create primary index on external dataset. 1054 = Compilation failed due to some problem in the query plan. 1055 = Incompatible implementation language %1$s for function %2$s. Expected language %3$s. @@ -153,8 +153,8 @@ 1057 = Expression of type %1$s is not supported in constant record 1058 = Literal of type %1$s is not supported in constant record 1059 = Field(s) %1$s unsupported in the with clause -1060 = Field \"%1$s\" in the with clause must be of type %2$s, but found %3$s -1061 = Field \"%1$s\" in the with clause cannot be null or missing +1060 = Field '%1$s' in the with clause must be of type %2$s, but found %3$s +1061 = Field '%1$s' in the with clause cannot be null or missing 1062 = Configuration parameter cannot be of type %1$s 1063 = Cannot find dataverse with name %1$s 1064 = An error was occurred while converting type %1$s to type %2$s. @@ -162,7 +162,7 @@ 1066 = Cannot serialize a value. 1067 = Cannot find a non-missing SELECT operator in GROUP operator for a left-outer-join plan optimization. 1068 = Cannot get the conditional split variable for the given UNNESTMAP operator. -1069 = Cannot drop index \"%1$s\". Drop dataset \"%1$s\" to remove this index +1069 = Cannot drop index '%1$s'. Drop dataset '%1$s' to remove this index 1070 = Metadata error. %1$s 1071 = A dataverse with this name %1$s already exists. 1072 = A dataset with name %1$s already exists in dataverse %2$s @@ -189,7 +189,7 @@ 1094 = Cannot parse range map: %1$s 1095 = Expected function call 1096 = Unknown compression scheme %1$s. Supported schemes are %2$s -1097 = Subfield(s) %1$s in \"%2$s\" unsupported in the with clause +1097 = Subfield(s) %1$s in '%2$s' unsupported in the with clause 1098 = Invalid window frame definition 1099 = Unexpected window frame definition 1100 = Unexpected window expression @@ -202,12 +202,12 @@ 1107 = Unexpected hint: %1$s. %2$s expected at this location 1108 = External source error. %1$s 1109 = External source container %1$s not found -1110 = The parameters \"%1$s\" and \"%2$s\" cannot be provided at the same time -1111 = Property \"%1$s\" expects value(s) of type %2$s -1112 = Invalid format for property \"%1$s\" +1110 = The parameters '%1$s' and '%2$s' cannot be provided at the same time +1111 = Property '%1$s' expects value(s) of type %2$s +1112 = Invalid format for property '%1$s' 1113 = Invalid pattern %1$s 1114 = The provided external dataset configuration returned no files from the external source -1115 = Invalid name for a database object: \"%1$s\" +1115 = Invalid name for a database object: '%1$s' 1116 = Cannot find synonym with name %1$s 1117 = Cannot find library with name %1$s 1118 = Too many grouping sets in group by clause: %1$s. Maximum allowed: %2$s. @@ -324,7 +324,7 @@ 3056 = Illegal escape '\%1$s' 3057 = Found END_RECORD while expecting a record field. 3058 = This record is closed, you can not add extra fields! new field name: %1$s -3059 = Unexpected ADM token kind: %1$s while expecting ":" +3059 = Unexpected ADM token kind: %1$s while expecting ':' 3060 = Found COMMA %1$s %2$s record field 3061 = Unsupported interval type: %1$s 3062 = Interval was not closed diff --git a/hyracks-fullstack/hyracks/hyracks-http/pom.xml b/hyracks-fullstack/hyracks/hyracks-http/pom.xml index 466a447..e06f6be 100644 --- a/hyracks-fullstack/hyracks/hyracks-http/pom.xml +++ b/hyracks-fullstack/hyracks/hyracks-http/pom.xml @@ -125,5 +125,10 @@ <version>${project.version}</version> <scope>test</scope> </dependency> + <dependency> + <groupId>org.apache.hyracks</groupId> + <artifactId>hyracks-api</artifactId> + <version>${project.version}</version> + </dependency> </dependencies> </project> \ No newline at end of file diff --git a/hyracks-fullstack/hyracks/hyracks-http/src/main/java/org/apache/hyracks/http/server/AbstractServlet.java b/hyracks-fullstack/hyracks/hyracks-http/src/main/java/org/apache/hyracks/http/server/AbstractServlet.java index ff23ac2..64a76f7 100644 --- a/hyracks-fullstack/hyracks/hyracks-http/src/main/java/org/apache/hyracks/http/server/AbstractServlet.java +++ b/hyracks-fullstack/hyracks/hyracks-http/src/main/java/org/apache/hyracks/http/server/AbstractServlet.java @@ -26,6 +26,7 @@ import java.nio.charset.StandardCharsets; import java.util.Arrays; import java.util.concurrent.ConcurrentMap; +import org.apache.hyracks.api.exceptions.IFormattedException; import org.apache.hyracks.http.api.IServlet; import org.apache.hyracks.http.api.IServletRequest; import org.apache.hyracks.http.api.IServletResponse; @@ -98,7 +99,7 @@ public abstract class AbstractServlet implements IServlet { } else if (HttpMethod.OPTIONS.equals(method)) { options(request, response); } else { - notAllowed(method, response); + methodNotAllowed(method, response); } } catch (Exception e) { LOGGER.log(Level.WARN, "Unhandled exception", e); @@ -113,21 +114,31 @@ public abstract class AbstractServlet implements IServlet { } protected void sendError(IServletResponse response, HttpResponseStatus status, String message) throws IOException { + sendError(response, HttpUtil.ContentType.TEXT_PLAIN, status, message); + } + + protected void sendError(IServletResponse response, String contentType, HttpResponseStatus status, String message) + throws IOException { response.setStatus(status); - HttpUtil.setContentType(response, HttpUtil.ContentType.TEXT_PLAIN, StandardCharsets.UTF_8); + HttpUtil.setContentType(response, contentType, StandardCharsets.UTF_8); if (message != null) { response.writer().println(message); } if (LOGGER.isInfoEnabled()) { - LOGGER.info("sendError: status=" + status + ", message=" + message); + LOGGER.info("sendError: status={}, message={}", status, message); } } + protected void sendError(IServletResponse response, HttpResponseStatus status, IFormattedException ex) + throws IOException { + sendError(response, status, ex != null ? ex.getMessage() : null); + } + protected void sendError(IServletResponse response, HttpResponseStatus status) throws IOException { - sendError(response, status, null); + sendError(response, status, status.reasonPhrase()); } - protected void notAllowed(HttpMethod method, IServletResponse response) throws IOException { + protected void methodNotAllowed(HttpMethod method, IServletResponse response) throws IOException { sendError(response, HttpResponseStatus.METHOD_NOT_ALLOWED, "Method " + method + " not allowed for the requested resource."); } @@ -135,37 +146,37 @@ public abstract class AbstractServlet implements IServlet { @SuppressWarnings("squid:S1172") protected void get(IServletRequest request, IServletResponse response) throws Exception { // designed to be extended but an error in standard case - notAllowed(HttpMethod.GET, response); + methodNotAllowed(HttpMethod.GET, response); } @SuppressWarnings("squid:S1172") protected void head(IServletRequest request, IServletResponse response) throws Exception { // designed to be extended but an error in standard case - notAllowed(HttpMethod.HEAD, response); + methodNotAllowed(HttpMethod.HEAD, response); } @SuppressWarnings("squid:S1172") protected void post(IServletRequest request, IServletResponse response) throws Exception { // designed to be extended but an error in standard case - notAllowed(HttpMethod.POST, response); + methodNotAllowed(HttpMethod.POST, response); } @SuppressWarnings("squid:S1172") protected void put(IServletRequest request, IServletResponse response) throws Exception { // designed to be extended but an error in standard case - notAllowed(HttpMethod.PUT, response); + methodNotAllowed(HttpMethod.PUT, response); } @SuppressWarnings("squid:S1172") protected void delete(IServletRequest request, IServletResponse response) throws Exception { // designed to be extended but an error in standard case - notAllowed(HttpMethod.DELETE, response); + methodNotAllowed(HttpMethod.DELETE, response); } @SuppressWarnings("squid:S1172") protected void options(IServletRequest request, IServletResponse response) throws Exception { // designed to be extended but an error in standard case - notAllowed(HttpMethod.OPTIONS, response); + methodNotAllowed(HttpMethod.OPTIONS, response); } public String host(IServletRequest request) {
