-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
[CALCITE-1384] Extension point for ALTER statements (Gabriel Reid)
Add a parser extension point for parsing of ALTER statements. The main content of this commit is the addition of an initial test setup to allow testing parsing extension points within Calcite itself. This involves the addition of test-specific parser templates and building of a test-specific parser. Fix running mvn clean install site, but ensuring that the javacc generated test sources directory is excluded from the source root when compiling (it's added as a source root by the javacc plugin). Also change the package of the parser extension testing classes to make it more clear that they are only for testing (for added clarity in the exclusions in the pom). Close apache/calcite#322
- Loading branch information
1 parent
ab6c70b
commit e18eeca
Showing
12 changed files
with
436 additions
and
39 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,60 @@ | ||
/* | ||
* 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. | ||
*/ | ||
package org.apache.calcite.sql; | ||
|
||
import org.apache.calcite.sql.parser.SqlParserPos; | ||
|
||
/** | ||
* Base class for an ALTER statements parse tree nodes. The portion of the | ||
* statement covered by this class is "ALTER <SCOPE>. Subclasses handle | ||
* whatever comes after the scope. | ||
*/ | ||
public abstract class SqlAlter extends SqlCall { | ||
|
||
/** Scope of the operation. Values "SYSTEM" and "SESSION" are typical. */ | ||
String scope; | ||
|
||
public SqlAlter(SqlParserPos pos) { | ||
this(pos, null); | ||
} | ||
|
||
public SqlAlter(SqlParserPos pos, String scope) { | ||
super(pos); | ||
this.scope = scope; | ||
} | ||
|
||
@Override public final void unparse(SqlWriter writer, int leftPrec, int rightPrec) { | ||
if (scope != null) { | ||
writer.keyword("ALTER"); | ||
writer.keyword(scope); | ||
} | ||
unparseAlterOperation(writer, leftPrec, rightPrec); | ||
} | ||
|
||
protected abstract void unparseAlterOperation(SqlWriter writer, int leftPrec, int rightPrec); | ||
|
||
public String getScope() { | ||
return scope; | ||
} | ||
|
||
public void setScope(String scope) { | ||
this.scope = scope; | ||
} | ||
|
||
} | ||
|
||
// End SqlAlter.java |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,72 @@ | ||
# 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. | ||
|
||
data: { | ||
parser: { | ||
# Generated parser implementation class package and name | ||
package: "org.apache.calcite.sql.parser.parserextensiontesting", | ||
class: "ExtensionSqlParserImpl", | ||
|
||
# List of import statements. | ||
imports: [ | ||
"org.apache.calcite.sql.parser.parserextensiontesting.SqlUploadJarNode" | ||
] | ||
|
||
# List of keywords. | ||
keywords: [ | ||
"UPLOAD" | ||
"JAR" | ||
] | ||
|
||
# List of keywords from "keywords" section that are not reserved. | ||
nonReservedKeywords: [ | ||
] | ||
|
||
# List of methods for parsing custom SQL statements. | ||
statementParserMethods: [ | ||
] | ||
|
||
# List of methods for parsing custom literals. | ||
# Example: ParseJsonLiteral(). | ||
literalParserMethods: [ | ||
] | ||
|
||
# List of methods for parsing custom data types. | ||
dataTypeParserMethods: [ | ||
] | ||
|
||
# List of methods for parsing extensions to ALTER SYSTEM calls. | ||
# Each must accept arguments "(SqlParserPos pos, String scope)". | ||
alterStatementParserMethods: [ | ||
"SqlUploadJarNode" | ||
] | ||
|
||
# List of files in @includes directory that have parser method | ||
# implementations for custom SQL statements, literals or types | ||
# given as part of "statementParserMethods", "literalParserMethods" or | ||
# "dataTypeParserMethods". | ||
implementationFiles: [ | ||
"parserImpls.ftl" | ||
] | ||
|
||
includeCompoundIdentifier: true | ||
includeBraces: true | ||
includeAdditionalDeclarations: false | ||
|
||
} | ||
} | ||
freemarkerLinks: { | ||
includes: includes/ | ||
} |
Oops, something went wrong.