Uploaded image for project: 'Ignite'
  1. Ignite
  2. IGNITE-7113

"Key is missing from query" when creating table with key_type=java.lang.String

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Open
    • Major
    • Resolution: Unresolved
    • 2.3
    • None
    • sql

    Description

      When creating a table of

      CREATE TABLE IF NOT EXISTS TableWithStringKey (
            ID VARCHAR PRIMARY KEY,
            DataNodeId VARCHAR
      ) WITH "backups=1, cache_name=TableWithStringKey, atomicity=transactional, key_type=java.lang.String, value_type=TableWithStringKey"
      

      and attempting an insert later

      INSERT INTO TableWithStringKey (ID, DataNodeId) VALUES ('ref2', 'src2')
      

      There's suddently an exception

      javax.cache.CacheException: class org.apache.ignite.internal.processors.query.IgniteSQLException: Failed to execute DML statement [stmt=INSERT INTO TableWithStringKey (ID, DataNodeId) VALUES ('ref2', 'src2'), params=null]
      	at org.apache.ignite.internal.processors.cache.IgniteCacheProxyImpl.query(IgniteCacheProxyImpl.java:597)
      	at org.apache.ignite.internal.processors.cache.IgniteCacheProxyImpl.query(IgniteCacheProxyImpl.java:560)
      	at org.apache.ignite.internal.processors.cache.GatewayProtectedCacheProxy.query(GatewayProtectedCacheProxy.java:382)
      	at com.gridgain.reproducer.IgniteStringKeyTest.insertTest(IgniteStringKeyTest.java:34)
      	... 24 more
      Caused by: class org.apache.ignite.internal.processors.query.IgniteSQLException: Failed to execute DML statement [stmt=INSERT INTO TableWithStringKey (ID, DataNodeId) VALUES ('ref2', 'src2'), params=null]
      	at org.apache.ignite.internal.processors.query.h2.IgniteH2Indexing.queryDistributedSqlFields(IgniteH2Indexing.java:1459)
      	at org.apache.ignite.internal.processors.query.GridQueryProcessor$5.applyx(GridQueryProcessor.java:1909)
      	at org.apache.ignite.internal.processors.query.GridQueryProcessor$5.applyx(GridQueryProcessor.java:1907)
      	at org.apache.ignite.internal.util.lang.IgniteOutClosureX.apply(IgniteOutClosureX.java:36)
      	at org.apache.ignite.internal.processors.query.GridQueryProcessor.executeQuery(GridQueryProcessor.java:2445)
      	at org.apache.ignite.internal.processors.query.GridQueryProcessor.querySqlFields(GridQueryProcessor.java:1914)
      	at org.apache.ignite.internal.processors.cache.IgniteCacheProxyImpl.query(IgniteCacheProxyImpl.java:585)
      	... 27 more
      Caused by: class org.apache.ignite.IgniteCheckedException: Key is missing from query
      	at org.apache.ignite.internal.processors.query.h2.dml.UpdatePlanBuilder.createSupplier(UpdatePlanBuilder.java:369)
      	at org.apache.ignite.internal.processors.query.h2.dml.UpdatePlanBuilder.planForInsert(UpdatePlanBuilder.java:211)
      	at org.apache.ignite.internal.processors.query.h2.dml.UpdatePlanBuilder.planForStatement(UpdatePlanBuilder.java:98)
      	at org.apache.ignite.internal.processors.query.h2.DmlStatementsProcessor.getPlanForStatement(DmlStatementsProcessor.java:473)
      	at org.apache.ignite.internal.processors.query.h2.DmlStatementsProcessor.updateSqlFields(DmlStatementsProcessor.java:170)
      	at org.apache.ignite.internal.processors.query.h2.DmlStatementsProcessor.updateSqlFieldsDistributed(DmlStatementsProcessor.java:229)
      	at org.apache.ignite.internal.processors.query.h2.IgniteH2Indexing.queryDistributedSqlFields(IgniteH2Indexing.java:1453)
      	... 33 more
      

      that goes away if you remove "key_type=java.lang.String"

      I'm attaching a reproducer class.

      Attachments

        1. IgniteStringKeyTest.java
          2 kB
          Ilya Kasnacheev

        Issue Links

          Activity

            People

              pkouznet Pavel Kuznetsov
              ilyak Ilya Kasnacheev
              Votes:
              0 Vote for this issue
              Watchers:
              8 Start watching this issue

              Dates

                Created:
                Updated: