Ian Maxon has submitted this change and it was merged. Change subject: [ASTERIXDB-2159][API] ValidateUtil throws NPE ......................................................................
[ASTERIXDB-2159][API] ValidateUtil throws NPE - user model changes: no - storage format changes: no - interface change: no Details: Fix a case where ValidateUtil throws an NPE instead of using error codes. Change-Id: If467e484e01e9085f2eb8a943a4178b44a384a02 Reviewed-on: https://asterix-gerrit.ics.uci.edu/2137 Sonar-Qube: Jenkins <[email protected]> Tested-by: Jenkins <[email protected]> Contrib: Jenkins <[email protected]> Integration-Tests: Jenkins <[email protected]> Reviewed-by: Dmitry Lychagin <[email protected]> --- M asterixdb/asterix-algebra/src/main/java/org/apache/asterix/translator/util/ValidateUtil.java A asterixdb/asterix-app/src/test/resources/runtimets/queries/dml/load-with-autogenerated-no-field/load-with-autogenerated-no-field.1.ddl.aql A asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/dml/load-with-autogenerated-no-field/load-with-autogenerated-pk_txt_01.1.ddl.sqlpp M asterixdb/asterix-app/src/test/resources/runtimets/testsuite.xml M asterixdb/asterix-app/src/test/resources/runtimets/testsuite_sqlpp.xml 5 files changed, 84 insertions(+), 0 deletions(-) Approvals: Jenkins: Verified; No violations found; ; Verified Dmitry Lychagin: Looks good to me, approved Objections: Anon. E. Moose #1000171: 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 d262bb8..cda9dd3 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 @@ -118,6 +118,10 @@ } List<String> fieldName = partitioningExprs.get(0); IAType fieldType = recType.getSubFieldType(fieldName); + if (fieldType == null) { + String unTypeField = fieldName.get(0) == null ? "" : fieldName.get(0); + throw new CompilationException(ErrorCode.COMPILATION_FIELD_NOT_FOUND, unTypeField); + } partitioningExprTypes.add(fieldType); ATypeTag pkTypeTag = fieldType.getTypeTag(); if (pkTypeTag != ATypeTag.UUID) { diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries/dml/load-with-autogenerated-no-field/load-with-autogenerated-no-field.1.ddl.aql b/asterixdb/asterix-app/src/test/resources/runtimets/queries/dml/load-with-autogenerated-no-field/load-with-autogenerated-no-field.1.ddl.aql new file mode 100644 index 0000000..a0764a0 --- /dev/null +++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries/dml/load-with-autogenerated-no-field/load-with-autogenerated-no-field.1.ddl.aql @@ -0,0 +1,34 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +// try to create autogenerated key on field not mentioned in type, should fail + +drop dataverse test if exists; +create dataverse test; + +use dataverse test; + +create type DBLPType as open { + id: uuid, + dblpid: string, + title: string, + authors: string, + misc: string +} + +create dataset DBLP(DBLPType) primary key not_id autogenerated; diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/dml/load-with-autogenerated-no-field/load-with-autogenerated-pk_txt_01.1.ddl.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/dml/load-with-autogenerated-no-field/load-with-autogenerated-pk_txt_01.1.ddl.sqlpp new file mode 100644 index 0000000..b04d413 --- /dev/null +++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/dml/load-with-autogenerated-no-field/load-with-autogenerated-pk_txt_01.1.ddl.sqlpp @@ -0,0 +1,34 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +drop dataverse test if exists; +create dataverse test; + +use test; + + +create type test.DBLPType as + closed { + id : uuid, + title : string, + authors : string +}; + +create dataset DBLP(DBLPType) primary key not_id autogenerated ; + diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/testsuite.xml b/asterixdb/asterix-app/src/test/resources/runtimets/testsuite.xml index 47560f6..8987a7f 100644 --- a/asterixdb/asterix-app/src/test/resources/runtimets/testsuite.xml +++ b/asterixdb/asterix-app/src/test/resources/runtimets/testsuite.xml @@ -1941,6 +1941,12 @@ </compilation-unit> </test-case> <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 [CompilationException]</expected-error> + </compilation-unit> + </test-case> + <test-case FilePath="dml"> <compilation-unit name="load-with-index"> <output-dir compare="Text">load-with-index</output-dir> </compilation-unit> 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 f0ad1a4..484e395 100644 --- a/asterixdb/asterix-app/src/test/resources/runtimets/testsuite_sqlpp.xml +++ b/asterixdb/asterix-app/src/test/resources/runtimets/testsuite_sqlpp.xml @@ -1887,6 +1887,12 @@ </compilation-unit> </test-case> <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>org.apache.asterix.common.exceptions.AsterixException: ASX1014: Field "not_id" is not found</expected-error> + </compilation-unit> + </test-case> + <test-case FilePath="dml"> <compilation-unit name="insert-return-records"> <output-dir compare="Text">insert-return-records</output-dir> </compilation-unit> -- To view, visit https://asterix-gerrit.ics.uci.edu/2137 To unsubscribe, visit https://asterix-gerrit.ics.uci.edu/settings Gerrit-MessageType: merged Gerrit-Change-Id: If467e484e01e9085f2eb8a943a4178b44a384a02 Gerrit-PatchSet: 4 Gerrit-Project: asterixdb Gerrit-Branch: master Gerrit-Owner: Ian Maxon <[email protected]> Gerrit-Reviewer: Anon. E. Moose #1000171 Gerrit-Reviewer: Dmitry Lychagin <[email protected]> Gerrit-Reviewer: Ian Maxon <[email protected]> Gerrit-Reviewer: Jenkins <[email protected]> Gerrit-Reviewer: Luo Chen <[email protected]> Gerrit-Reviewer: Taewoo Kim <[email protected]> Gerrit-Reviewer: Xikui Wang <[email protected]>
