(ЕСЛИ НЕ СУЩЕСТВУЕТ) в CREATE TABLE оператор не работает - PullRequest
0 голосов
/ 26 ноября 2018

При тестировании 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 (неизвестный источник)

1 Ответ

0 голосов
/ 27 ноября 2018

Проверено тоже самое, да, это проблема.Для этого я создал проблему Jira: https://issues.apache.org/jira/browse/IGNITE-10414.

...