This is an automated email from the ASF dual-hosted git repository. dlych pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/asterixdb.git
commit 8cff4a0d0ba7c28c9a82645d012274ff87fc4b8c Author: Dmitry Lychagin <[email protected]> AuthorDate: Mon Dec 7 15:36:10 2020 -0800 [NO ISSUE][COMP] Reserve asterix and algebricks dataverses - user model changes: no - storage format changes: no - interface changes: no Details: - Prevent CREATE DATAVERSE statement from creating asterix and algebricks dataverses Change-Id: I82cd0d60067fd0a5ab07076f85877869d163dad2 Reviewed-on: https://asterix-gerrit.ics.uci.edu/c/asterixdb/+/9225 Integration-Tests: Jenkins <[email protected]> Tested-by: Jenkins <[email protected]> Reviewed-by: Dmitry Lychagin <[email protected]> --- .../asterix/translator/AbstractLangTranslator.java | 13 ++++++++++++ .../invalid-dataverse-name.4.ddl.sqlpp | 24 ++++++++++++++++++++++ .../invalid-dataverse-name.5.ddl.sqlpp | 24 ++++++++++++++++++++++ .../test/resources/runtimets/testsuite_sqlpp.xml | 2 ++ 4 files changed, 63 insertions(+) diff --git a/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/translator/AbstractLangTranslator.java b/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/translator/AbstractLangTranslator.java index cc63560..8777f66 100644 --- a/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/translator/AbstractLangTranslator.java +++ b/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/translator/AbstractLangTranslator.java @@ -33,8 +33,10 @@ import org.apache.asterix.common.dataflow.ICcApplicationContext; import org.apache.asterix.common.exceptions.AsterixException; import org.apache.asterix.common.exceptions.CompilationException; import org.apache.asterix.common.exceptions.ErrorCode; +import org.apache.asterix.common.functions.FunctionConstants; import org.apache.asterix.common.metadata.DataverseName; import org.apache.asterix.lang.common.base.Statement; +import org.apache.asterix.lang.common.statement.CreateDataverseStatement; import org.apache.asterix.lang.common.statement.DatasetDecl; import org.apache.asterix.lang.common.statement.DataverseDropStatement; import org.apache.asterix.lang.common.statement.DeleteStatement; @@ -142,6 +144,16 @@ public abstract class AbstractLangTranslator { } break; + case CREATE_DATAVERSE: + CreateDataverseStatement dvCreateStmt = (CreateDataverseStatement) stmt; + dataverseName = dvCreateStmt.getDataverseName(); + invalidOperation = FunctionConstants.ASTERIX_DV.equals(dataverseName) + || FunctionConstants.ALGEBRICKS_DV.equals(dataverseName); + if (invalidOperation) { + message = "Cannot create dataverse: " + dataverseName; + } + break; + case DATAVERSE_DROP: DataverseDropStatement dvDropStmt = (DataverseDropStatement) stmt; dataverseName = dvDropStmt.getDataverseName(); @@ -162,6 +174,7 @@ public abstract class AbstractLangTranslator { + MetadataConstants.METADATA_DATAVERSE_NAME; } break; + case DATASET_DECL: DatasetDecl datasetStmt = (DatasetDecl) stmt; Map<String, String> hints = datasetStmt.getHints(); diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/ddl/invalid-dataverse-name/invalid-dataverse-name.4.ddl.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/ddl/invalid-dataverse-name/invalid-dataverse-name.4.ddl.sqlpp new file mode 100644 index 0000000..61a675c --- /dev/null +++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/ddl/invalid-dataverse-name/invalid-dataverse-name.4.ddl.sqlpp @@ -0,0 +1,24 @@ +/* + * 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. + */ + +/* + * Reserved dataverse name -> Error + */ + +create dataverse asterix; \ No newline at end of file diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/ddl/invalid-dataverse-name/invalid-dataverse-name.5.ddl.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/ddl/invalid-dataverse-name/invalid-dataverse-name.5.ddl.sqlpp new file mode 100644 index 0000000..85708ce --- /dev/null +++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/ddl/invalid-dataverse-name/invalid-dataverse-name.5.ddl.sqlpp @@ -0,0 +1,24 @@ +/* + * 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. + */ + +/* + * Reserved dataverse name -> Error + */ + +create dataverse algebricks; \ No newline at end of file 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 b75da14..b73ce69 100644 --- a/asterixdb/asterix-app/src/test/resources/runtimets/testsuite_sqlpp.xml +++ b/asterixdb/asterix-app/src/test/resources/runtimets/testsuite_sqlpp.xml @@ -4020,6 +4020,8 @@ <output-dir compare="Text">none</output-dir> <expected-error>ASX1115: Invalid name for a database object: "<empty>"</expected-error> <expected-error>ASX1115: Invalid name for a database object: " a"</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> </compilation-unit> </test-case> <test-case FilePath="ddl">
