Search in sources :

Example 6 with MySqlKey

use of com.alibaba.druid.sql.dialect.mysql.ast.MySqlKey in project dble by actiontech.

the class MetaHelper method initTableMeta.

public static StructureMeta.TableMeta initTableMeta(String table, SQLCreateTableStatement createStatement, long timeStamp) {
    StructureMeta.TableMeta.Builder tmBuilder = StructureMeta.TableMeta.newBuilder();
    tmBuilder.setTableName(table);
    tmBuilder.setVersion(timeStamp);
    Set<String> indexNames = new HashSet<>();
    for (SQLTableElement tableElement : createStatement.getTableElementList()) {
        if (tableElement instanceof SQLColumnDefinition) {
            SQLColumnDefinition column = (SQLColumnDefinition) tableElement;
            StructureMeta.ColumnMeta.Builder cmBuilder = makeColumnMeta(tmBuilder, column, indexNames);
            if (cmBuilder.getAutoIncre()) {
                tmBuilder.setAiColPos(tmBuilder.getColumnsCount());
            }
            tmBuilder.addColumns(cmBuilder.build());
        } else if (tableElement instanceof MySqlPrimaryKey) {
            MySqlPrimaryKey primaryKey = (MySqlPrimaryKey) tableElement;
            tmBuilder.setPrimary(makeIndexMeta(PRIMARY, IndexType.PRI, primaryKey.getColumns()));
        } else if (tableElement instanceof MySqlUnique) {
            MySqlUnique unique = (MySqlUnique) tableElement;
            String indexName = genIndexName(unique.getName(), unique.getColumns(), indexNames);
            tmBuilder.addUniIndex(makeIndexMeta(indexName, IndexType.UNI, unique.getColumns()));
        } else if (tableElement instanceof MySqlTableIndex) {
            MySqlTableIndex index = (MySqlTableIndex) tableElement;
            String indexName = genIndexName(index.getName(), index.getColumns(), indexNames);
            tmBuilder.addIndex(makeIndexMeta(indexName, IndexType.MUL, index.getColumns()));
        } else if (tableElement instanceof MySqlKey) {
            MySqlKey index = (MySqlKey) tableElement;
            String indexName = genIndexName(index.getIndexName(), index.getColumns(), indexNames);
            tmBuilder.addIndex(makeIndexMeta(indexName, IndexType.MUL, index.getColumns()));
        } else {
        // ignore
        }
    }
    return tmBuilder.build();
}
Also used : MySqlKey(com.alibaba.druid.sql.dialect.mysql.ast.MySqlKey) MySqlTableIndex(com.alibaba.druid.sql.dialect.mysql.ast.statement.MySqlTableIndex) MySqlUnique(com.alibaba.druid.sql.dialect.mysql.ast.MySqlUnique) MySqlPrimaryKey(com.alibaba.druid.sql.dialect.mysql.ast.MySqlPrimaryKey)

Aggregations

MySqlKey (com.alibaba.druid.sql.dialect.mysql.ast.MySqlKey)6 MySqlUnique (com.alibaba.druid.sql.dialect.mysql.ast.MySqlUnique)5 MySqlPrimaryKey (com.alibaba.druid.sql.dialect.mysql.ast.MySqlPrimaryKey)2 MysqlForeignKey (com.alibaba.druid.sql.dialect.mysql.ast.MysqlForeignKey)1 TableSpaceOption (com.alibaba.druid.sql.dialect.mysql.ast.statement.MySqlCreateTableStatement.TableSpaceOption)1 MySqlTableIndex (com.alibaba.druid.sql.dialect.mysql.ast.statement.MySqlTableIndex)1 OracleExprParser (com.alibaba.druid.sql.dialect.oracle.parser.OracleExprParser)1 Token (com.alibaba.druid.sql.parser.Token)1