use of net.sf.jsqlparser.statement.create.index.CreateIndex in project JSqlParser by JSQLParser.
the class CreateIndexTest method testCreateIndex5.
@Test
public void testCreateIndex5() throws JSQLParserException {
String statement = "CREATE mytype INDEX myindex ON mytab (mycol ASC, mycol2 (75), mycol3) mymodifiers";
CreateIndex createIndex = (CreateIndex) parserManager.parse(new StringReader(statement));
assertEquals(3, createIndex.getIndex().getColumnsNames().size());
assertEquals("myindex", createIndex.getIndex().getName());
assertEquals("mytype", createIndex.getIndex().getType());
assertEquals("mytab", createIndex.getTable().getFullyQualifiedName());
assertEquals("mycol3", createIndex.getIndex().getColumnsNames().get(2));
}
use of net.sf.jsqlparser.statement.create.index.CreateIndex in project JSqlParser by JSQLParser.
the class CreateIndexTest method testCreateIndex2.
@Test
public void testCreateIndex2() throws JSQLParserException {
String statement = "CREATE mytype INDEX myindex ON mytab (mycol, mycol2)";
CreateIndex createIndex = (CreateIndex) parserManager.parse(new StringReader(statement));
assertEquals(2, createIndex.getIndex().getColumnsNames().size());
assertEquals("myindex", createIndex.getIndex().getName());
assertEquals("mytype", createIndex.getIndex().getType());
assertEquals("mytab", createIndex.getTable().getFullyQualifiedName());
assertEquals("mycol2", createIndex.getIndex().getColumnsNames().get(1));
assertEquals(statement, "" + createIndex);
}
use of net.sf.jsqlparser.statement.create.index.CreateIndex 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(")");
}
}
use of net.sf.jsqlparser.statement.create.index.CreateIndex 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);
}
}
use of net.sf.jsqlparser.statement.create.index.CreateIndex in project dbeaver by serge-rider.
the class SQLQuery method parseQuery.
private void parseQuery() {
if (parsed) {
return;
}
parsed = true;
try {
if (CommonUtils.isEmpty(text)) {
this.statement = null;
this.parseError = new DBException("Empty query");
return;
}
statement = SQLSemanticProcessor.parseQuery(dataSource == null ? null : dataSource.getSQLDialect(), text);
if (statement instanceof Select) {
type = SQLQueryType.SELECT;
// Detect single source table (no joins, no group by, no sub-selects)
SelectBody selectBody = ((Select) statement).getSelectBody();
if (selectBody instanceof PlainSelect) {
PlainSelect plainSelect = (PlainSelect) selectBody;
if (plainSelect.getFromItem() instanceof Table && CommonUtils.isEmpty(plainSelect.getJoins()) && (plainSelect.getGroupBy() == null || CommonUtils.isEmpty(plainSelect.getGroupBy().getGroupByExpressions())) && CommonUtils.isEmpty(plainSelect.getIntoTables())) {
boolean hasSubSelects = false;
for (SelectItem si : plainSelect.getSelectItems()) {
if (si instanceof SelectExpressionItem && ((SelectExpressionItem) si).getExpression() instanceof SubSelect) {
hasSubSelects = true;
break;
}
}
if (!hasSubSelects) {
fillSingleSource((Table) plainSelect.getFromItem());
}
}
// Extract select items info
final List<SelectItem> items = plainSelect.getSelectItems();
if (items != null && !items.isEmpty()) {
selectItems = new ArrayList<>();
for (SelectItem item : items) {
selectItems.add(new SQLSelectItem(item));
}
}
}
} else if (statement instanceof Insert) {
type = SQLQueryType.INSERT;
fillSingleSource(((Insert) statement).getTable());
} else if (statement instanceof Update) {
type = SQLQueryType.UPDATE;
Table table = ((Update) statement).getTable();
if (table != null) {
fillSingleSource(table);
}
} else if (statement instanceof Delete) {
type = SQLQueryType.DELETE;
if (((Delete) statement).getTable() != null) {
fillSingleSource(((Delete) statement).getTable());
} else {
List<Table> tables = ((Delete) statement).getTables();
if (tables != null && tables.size() == 1) {
fillSingleSource(tables.get(0));
}
}
} else if (statement instanceof Alter || statement instanceof CreateTable || statement instanceof CreateView || statement instanceof Drop || statement instanceof CreateIndex) {
type = SQLQueryType.DDL;
} else {
type = SQLQueryType.UNKNOWN;
}
} catch (Throwable e) {
this.type = SQLQueryType.UNKNOWN;
this.parseError = e;
// log.debug("Error parsing SQL query [" + query + "]:" + CommonUtils.getRootCause(e).getMessage());
}
}
Aggregations