При тестировании Ignite 2.6.0 (2018-07-16) было обнаружено, что (IF NOT EXISTS)
в операторе CREATE TABLE
не работает.Код выглядит так:
Class.forName("org.apache.ignite.IgniteJdbcThinDriver");
try (Connection conn = DriverManager.getConnection("jdbc:ignite:thin://127.0.0.1/"))
{
try (Statement stmt = conn.createStatement())
{
stmt.executeUpdate("CREATE TABLE IF NOT EXISTS City(id LONG PRIMARY KEY,"
+ " name VARCHAR) WITH \"template=replicated\"");
}
}
После успешного первого запуска снова возникает исключение:
Не удалось выполнить запрос SQL [reqId = 0, req = JdbcQueryExecuteRequest [schemaName= PUBLIC, pageSize = 1024, maxRows = 0, sqlQry = СОЗДАТЬ ТАБЛИЦУ, ЕСЛИ НЕ СУЩЕСТВУЕТ Город (id LONG PRIMARY KEY, name VARCHAR) С "template = replicated", args = [], stmtType = UPDATE_STMT_TYPE]] класс org.apache.ignite.internal.processors.query.IgniteSQLException: таблица уже существует: CITY в org.apache.ignite.internal.processors.query.h2.ddl.DdlStatementsProcessor.convert (DdlStatementsProcessor.java:582) в org.apache.ignite.internal.processors.query.h2.ddl.DdlStatementsProcessor.runDdlStatement (DdlStatementsProcessor.java:511) в org.apache.ignite.internal.processors.query.h2.IgniteH2Indexing.doRunPrepared (IgniteH2Inign.36)..internal.processors.query.h2.IgniteH2Indexing.querySqlFields (IgniteH2Indexing.java:1671) в org.apache.ignite.internal.processors.query.GridQueryProcessor $ 4.applyx (GridQueryProcessor.java:2035) в org.apache.ignite.internal.processors.query.GridQueryProcessor $ 4.applyx (GridQueryProcessor.java:2030) в org.apache.ignite.internal.util.lang.IgniteOutClaylosure.java: 36) по адресу org.apache.ignite.internal.processors.query.GridQueryProcessor.executeQuery (GridQueryProcessor.java:2578) по адресу org.apache.ignite.internal.processors.query.GridQueryProcessor.querySqlFcess.orjQQ) в org.apache.ignite.internal.processors.odbc.jdbc.JdbcRequestHandler.executeQuery (JdbcRequestHandler.java:456) в org.apache.ignite.internal.processors.odbc.jdbc.JdbcRequestHandb.RejestHandler.hand) в org.apache.ignite.internal.processors.odbc.ClientListenerNioListener.onMessage (ClientListenerNioListener.java:160) в org.apache.ignite.internal.processors.odbc.ClientListenerNioListener.onMessage (ClientListenerNio).apache.ignite.internal.util.nio.GridNioFilterChain $ TailFilter.onMessageReceived (GridNioFilterChain.java:279) в org.apache.ignite.internal.util.nio.GridNioFilterAdapter.proceedMessageReceived (GridNioFilterAdapter.java:109) в org.apache.ignite.internal.util.nio.GridNioAsiljNit: 97) в org.apache.ignite.internal.util.worker.GridWorker.run (GridWorker.java:110) в org.apache.ignite.internal.util.worker.GridWorkerPool $ 1.run (GridWorkerPool.java:70)на java.util.concurrent.ThreadPoolExecutor.runWorker (неизвестный источник) на java.util.concurrent.ThreadPoolExecutor $ Worker.run (неизвестный источник) на java.lang.Thread.run (неизвестный источник)