-
Notifications
You must be signed in to change notification settings - Fork 2.4k
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
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.
- Loading branch information
Gabriel Reid
committed
Nov 4, 2016
1 parent
435b6d4
commit ccd5797
Showing
12 changed files
with
445 additions
and
34 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,71 @@ | ||
# 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.extension", | ||
class: "ExtensionSqlParserImpl", | ||
|
||
# List of import statements. | ||
imports: [ | ||
"org.apache.calcite.sql.parser.extension.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 | ||
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.