Search in sources :

Example 6 with Index

use of net.sf.jsqlparser.statement.create.table.Index in project JSqlParser by JSQLParser.

the class CreateTableTest method testCreateTableUnlogged.

public void testCreateTableUnlogged() throws JSQLParserException {
    String statement = "CREATE UNLOGGED TABLE mytab (mycol a (10, 20) c nm g, mycol2 mypar1 mypar2 (23,323,3) asdf ('23','123') dasd, " + "PRIMARY KEY (mycol2, mycol)) type = myisam";
    CreateTable createTable = (CreateTable) parserManager.parse(new StringReader(statement));
    assertEquals(2, createTable.getColumnDefinitions().size());
    assertTrue(createTable.isUnlogged());
    assertEquals("mycol", ((ColumnDefinition) createTable.getColumnDefinitions().get(0)).getColumnName());
    assertEquals("mycol2", ((ColumnDefinition) createTable.getColumnDefinitions().get(1)).getColumnName());
    assertEquals("PRIMARY KEY", ((Index) createTable.getIndexes().get(0)).getType());
    assertEquals("mycol", ((Index) createTable.getIndexes().get(0)).getColumnsNames().get(1));
    assertEquals(statement, "" + createTable);
}
Also used : CreateTable(net.sf.jsqlparser.statement.create.table.CreateTable) StringReader(java.io.StringReader) Index(net.sf.jsqlparser.statement.create.table.Index)

Example 7 with Index

use of net.sf.jsqlparser.statement.create.table.Index in project JSqlParser by JSQLParser.

the class CreateTableTest method testCreateTable.

public void testCreateTable() throws JSQLParserException {
    String statement = "CREATE TABLE mytab (mycol a (10, 20) c nm g, mycol2 mypar1 mypar2 (23,323,3) asdf ('23','123') dasd, " + "PRIMARY KEY (mycol2, mycol)) type = myisam";
    CreateTable createTable = (CreateTable) parserManager.parse(new StringReader(statement));
    assertEquals(2, createTable.getColumnDefinitions().size());
    assertFalse(createTable.isUnlogged());
    assertEquals("mycol", ((ColumnDefinition) createTable.getColumnDefinitions().get(0)).getColumnName());
    assertEquals("mycol2", ((ColumnDefinition) createTable.getColumnDefinitions().get(1)).getColumnName());
    assertEquals("PRIMARY KEY", ((Index) createTable.getIndexes().get(0)).getType());
    assertEquals("mycol", ((Index) createTable.getIndexes().get(0)).getColumnsNames().get(1));
    assertEquals(statement, "" + createTable);
}
Also used : CreateTable(net.sf.jsqlparser.statement.create.table.CreateTable) StringReader(java.io.StringReader) Index(net.sf.jsqlparser.statement.create.table.Index)

Example 8 with Index

use of net.sf.jsqlparser.statement.create.table.Index in project JSqlParser by JSQLParser.

the class CreateIndexDeParser method deParse.

public void deParse(CreateIndex createIndex) {
    Index index = createIndex.getIndex();
    buffer.append("CREATE ");
    if (index.getType() != null) {
        buffer.append(index.getType());
        buffer.append(" ");
    }
    buffer.append("INDEX ");
    buffer.append(index.getName());
    buffer.append(" ON ");
    buffer.append(createIndex.getTable().getFullyQualifiedName());
    if (index.getColumnsNames() != null) {
        buffer.append(" (");
        for (Iterator iter = index.getColumnsNames().iterator(); iter.hasNext(); ) {
            String columnName = (String) iter.next();
            buffer.append(columnName);
            if (iter.hasNext()) {
                buffer.append(", ");
            }
        }
        buffer.append(")");
    }
}
Also used : Iterator(java.util.Iterator) Index(net.sf.jsqlparser.statement.create.table.Index) CreateIndex(net.sf.jsqlparser.statement.create.index.CreateIndex)

Example 9 with Index

use of net.sf.jsqlparser.statement.create.table.Index in project JSqlParser by JSQLParser.

the class CreateTableDeParser method deParse.

public void deParse(CreateTable createTable) {
    buffer.append("CREATE ");
    if (createTable.isUnlogged()) {
        buffer.append("UNLOGGED ");
    }
    String params = PlainSelect.getStringList(createTable.getCreateOptionsStrings(), false, false);
    if (!"".equals(params)) {
        buffer.append(params).append(' ');
    }
    buffer.append("TABLE ");
    if (createTable.isIfNotExists()) {
        buffer.append("IF NOT EXISTS ");
    }
    buffer.append(createTable.getTable().getFullyQualifiedName());
    if (createTable.getSelect() != null) {
        buffer.append(" AS ");
        if (createTable.isSelectParenthesis()) {
            buffer.append("(");
        }
        buffer.append(createTable.getSelect().toString());
        if (createTable.isSelectParenthesis()) {
            buffer.append(")");
        }
    } else {
        if (createTable.getColumnDefinitions() != null) {
            buffer.append(" (");
            for (Iterator<ColumnDefinition> iter = createTable.getColumnDefinitions().iterator(); iter.hasNext(); ) {
                ColumnDefinition columnDefinition = iter.next();
                buffer.append(columnDefinition.getColumnName());
                buffer.append(" ");
                buffer.append(columnDefinition.getColDataType().toString());
                if (columnDefinition.getColumnSpecStrings() != null) {
                    for (String s : columnDefinition.getColumnSpecStrings()) {
                        buffer.append(" ");
                        buffer.append(s);
                    }
                }
                if (iter.hasNext()) {
                    buffer.append(", ");
                }
            }
            if (createTable.getIndexes() != null) {
                for (Iterator<Index> iter = createTable.getIndexes().iterator(); iter.hasNext(); ) {
                    buffer.append(", ");
                    Index index = iter.next();
                    buffer.append(index.toString());
                }
            }
            buffer.append(")");
        }
    }
    params = PlainSelect.getStringList(createTable.getTableOptionsStrings(), false, false);
    if (!"".equals(params)) {
        buffer.append(' ').append(params);
    }
}
Also used : Index(net.sf.jsqlparser.statement.create.table.Index) ColumnDefinition(net.sf.jsqlparser.statement.create.table.ColumnDefinition)

Example 10 with Index

use of net.sf.jsqlparser.statement.create.table.Index in project herddb by diennea.

the class SQLPlanner method buildCreateIndexStatement.

private Statement buildCreateIndexStatement(String defaultTableSpace, CreateIndex s) throws StatementExecutionException {
    try {
        String tableSpace = s.getTable().getSchemaName();
        if (tableSpace == null) {
            tableSpace = defaultTableSpace;
        }
        String tableName = s.getTable().getName();
        String indexName = s.getIndex().getName().toLowerCase();
        String indexType = convertIndexType(s.getIndex().getType());
        herddb.model.Index.Builder builder = herddb.model.Index.builder().name(indexName).uuid(UUID.randomUUID().toString()).type(indexType).table(tableName).tablespace(tableSpace);
        AbstractTableManager tableDefinition = manager.getTableSpaceManager(tableSpace).getTableManager(tableName);
        if (tableDefinition == null) {
            throw new TableDoesNotExistException("no such table " + tableName + " in tablespace " + tableSpace);
        }
        for (String columnName : s.getIndex().getColumnsNames()) {
            columnName = columnName.toLowerCase();
            Column column = tableDefinition.getTable().getColumn(columnName);
            if (column == null) {
                throw new StatementExecutionException("no such column " + columnName + " on table " + tableName + " in tablespace " + tableSpace);
            }
            builder.column(column.name, column.type);
        }
        CreateIndexStatement statement = new CreateIndexStatement(builder.build());
        return statement;
    } catch (IllegalArgumentException err) {
        throw new StatementExecutionException("bad index definition: " + err.getMessage(), err);
    }
}
Also used : TableDoesNotExistException(herddb.model.TableDoesNotExistException) AbstractTableManager(herddb.core.AbstractTableManager) Column(herddb.model.Column) CreateIndexStatement(herddb.model.commands.CreateIndexStatement) CreateIndex(net.sf.jsqlparser.statement.create.index.CreateIndex) Index(net.sf.jsqlparser.statement.create.table.Index) StatementExecutionException(herddb.model.StatementExecutionException)

Aggregations

Index (net.sf.jsqlparser.statement.create.table.Index)10 CreateIndex (net.sf.jsqlparser.statement.create.index.CreateIndex)6 CreateTable (net.sf.jsqlparser.statement.create.table.CreateTable)5 Column (herddb.model.Column)4 StatementExecutionException (herddb.model.StatementExecutionException)4 ColumnDefinition (net.sf.jsqlparser.statement.create.table.ColumnDefinition)4 StringReader (java.io.StringReader)3 ArrayList (java.util.ArrayList)3 AbstractTableManager (herddb.core.AbstractTableManager)2 Table (herddb.model.Table)2 TableDoesNotExistException (herddb.model.TableDoesNotExistException)2 CreateIndexStatement (herddb.model.commands.CreateIndexStatement)2 CreateTableStatement (herddb.model.commands.CreateTableStatement)2 HashSet (java.util.HashSet)2 Iterator (java.util.Iterator)2 ForeignKeyIndex (net.sf.jsqlparser.statement.create.table.ForeignKeyIndex)2 ForeignKeyDef (herddb.model.ForeignKeyDef)1 ShowCreateTableCalculator.calculateShowCreateTable (herddb.sql.functions.ShowCreateTableCalculator.calculateShowCreateTable)1 Bytes (herddb.utils.Bytes)1 BufferedReader (java.io.BufferedReader)1