/*
* Copyright 1999-2012 Alibaba Group.
*
* Licensed 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.
*/
/**
* (created at 2012-8-14)
*/
package com.alibaba.cobar.parser.ast.fragment.ddl;
import java.util.List;
import com.alibaba.cobar.parser.ast.ASTNode;
import com.alibaba.cobar.parser.ast.expression.Expression;
import com.alibaba.cobar.parser.ast.expression.primary.Identifier;
import com.alibaba.cobar.parser.ast.expression.primary.literal.LiteralString;
import com.alibaba.cobar.parser.visitor.SQLASTVisitor;
/**
* @author <a href="mailto:shuo.qius@alibaba-inc.com">QIU Shuo</a>
*/
public class TableOptions implements ASTNode {
public static enum InsertMethod {
NO,
FIRST,
LAST
}
public static enum PackKeys {
FALSE,
TRUE,
DEFAULT
}
public static enum RowFormat {
DEFAULT,
DYNAMIC,
FIXED,
COMPRESSED,
REDUNDANT,
COMPACT
}
private Identifier engine;
private Expression autoIncrement;
private Expression avgRowLength;
private Identifier charSet;
private Identifier collation;
private Boolean checkSum;
private LiteralString comment;
private LiteralString connection;
private LiteralString dataDir;
private LiteralString indexDir;
private Boolean delayKeyWrite;
private InsertMethod insertMethod;
private Expression keyBlockSize;
private Expression maxRows;
private Expression minRows;
private PackKeys packKeys;
private LiteralString password;
private RowFormat rowFormat;
private List<Identifier> union;
// table_option:
// ENGINE [=] engine_name
// | AUTO_INCREMENT [=] value
// | AVG_ROW_LENGTH [=] value
// | [DEFAULT] CHARACTER SET [=] charset_name
// | CHECKSUM [=] {0 | 1}
// | [DEFAULT] COLLATE [=] collation_name
// | COMMENT [=] 'string'
// | CONNECTION [=] 'connect_string'
// | DATA DIRECTORY [=] 'absolute path to directory'
// | DELAY_KEY_WRITE [=] {0 | 1}
// | INDEX DIRECTORY [=] 'absolute path to directory'
// | INSERT_METHOD [=] { NO | FIRST | LAST }
// | KEY_BLOCK_SIZE [=] value
// | MAX_ROWS [=] value
// | MIN_ROWS [=] value
// | PACK_KEYS [=] {0 | 1 | DEFAULT}
// | PASSWORD [=] 'string'
// | ROW_FORMAT [=] {DEFAULT|DYNAMIC|FIXED|COMPRESSED|REDUNDANT|COMPACT}
// | UNION [=] (tbl_name[,tbl_name]...)
public TableOptions() {
}
public Identifier getEngine() {
return engine;
}
public void setEngine(Identifier engine) {
this.engine = engine;
}
public Expression getAutoIncrement() {
return autoIncrement;
}
public void setAutoIncrement(Expression autoIncrement) {
this.autoIncrement = autoIncrement;
}
public Expression getAvgRowLength() {
return avgRowLength;
}
public void setAvgRowLength(Expression avgRowLength) {
this.avgRowLength = avgRowLength;
}
public Identifier getCharSet() {
return charSet;
}
public void setCharSet(Identifier charSet) {
this.charSet = charSet;
}
public Identifier getCollation() {
return collation;
}
public void setCollation(Identifier collation) {
this.collation = collation;
}
public Boolean getCheckSum() {
return checkSum;
}
public void setCheckSum(Boolean checkSum) {
this.checkSum = checkSum;
}
public LiteralString getComment() {
return comment;
}
public void setComment(LiteralString comment) {
this.comment = comment;
}
public LiteralString getConnection() {
return connection;
}
public void setConnection(LiteralString connection) {
this.connection = connection;
}
public LiteralString getDataDir() {
return dataDir;
}
public void setDataDir(LiteralString dataDir) {
this.dataDir = dataDir;
}
public LiteralString getIndexDir() {
return indexDir;
}
public void setIndexDir(LiteralString indexDir) {
this.indexDir = indexDir;
}
public Boolean getDelayKeyWrite() {
return delayKeyWrite;
}
public void setDelayKeyWrite(Boolean delayKeyWrite) {
this.delayKeyWrite = delayKeyWrite;
}
public InsertMethod getInsertMethod() {
return insertMethod;
}
public void setInsertMethod(InsertMethod insertMethod) {
this.insertMethod = insertMethod;
}
public Expression getKeyBlockSize() {
return keyBlockSize;
}
public void setKeyBlockSize(Expression keyBlockSize) {
this.keyBlockSize = keyBlockSize;
}
public Expression getMaxRows() {
return maxRows;
}
public void setMaxRows(Expression maxRows) {
this.maxRows = maxRows;
}
public Expression getMinRows() {
return minRows;
}
public void setMinRows(Expression minRows) {
this.minRows = minRows;
}
public PackKeys getPackKeys() {
return packKeys;
}
public void setPackKeys(PackKeys packKeys) {
this.packKeys = packKeys;
}
public LiteralString getPassword() {
return password;
}
public void setPassword(LiteralString password) {
this.password = password;
}
public RowFormat getRowFormat() {
return rowFormat;
}
public void setRowFormat(RowFormat rowFormat) {
this.rowFormat = rowFormat;
}
public List<Identifier> getUnion() {
return union;
}
public void setUnion(List<Identifier> union) {
this.union = union;
}
@Override
public void accept(SQLASTVisitor visitor) {
visitor.visit(this);
}
}