Failing to create index on Ignite table column

classic Classic list List threaded Threaded
8 messages Options
Shravya Nethula Shravya Nethula
Reply | Threaded
Open this post in threaded view
|

Failing to create index on Ignite table column

Hi,

I successfully created an Ignite table named User. Now I want to create 3
indexes on id, cityId, age columns in User table. Indexes were successfully
created on id and cityId columns. But I am getting the following "duplicate
index found" error though I am trying to create index for the first time for
age column:

>>>>> Generated sql : CREATE INDEX  ON User (id asc)
>>>>> Successfully created index on id column

>>>>> Generated sql : CREATE INDEX  ON User (cityId asc)
>>>>> Successfully created index on cityId column

>>>>> Generated sql : CREATE INDEX  ON User (age asc)
>>>>> Failed to create index on age column
>>>>> Invalid schema state (duplicate index found): null

[12:34:52] (err) DDL operation failureSchemaOperationException [code=0,
msg=Invalid schema state (duplicate index found): null]
        at
org.apache.ignite.internal.processors.query.GridQueryProcessor.prepareChangeOnNotStartedCache(GridQueryProcessor.java:1104)
        at
org.apache.ignite.internal.processors.query.GridQueryProcessor.startSchemaChange(GridQueryProcessor.java:627)
        at
org.apache.ignite.internal.processors.query.GridQueryProcessor.onSchemaPropose(GridQueryProcessor.java:488)
        at
org.apache.ignite.internal.processors.cache.GridCacheProcessor.processCustomExchangeTask(GridCacheProcessor.java:378)
        at
org.apache.ignite.internal.processors.cache.GridCachePartitionExchangeManager$ExchangeWorker.processCustomTask(GridCachePartitionExchangeManager.java:2475)
        at
org.apache.ignite.internal.processors.cache.GridCachePartitionExchangeManager$ExchangeWorker.body0(GridCachePartitionExchangeManager.java:2620)
        at
org.apache.ignite.internal.processors.cache.GridCachePartitionExchangeManager$ExchangeWorker.body(GridCachePartitionExchangeManager.java:2539)
        at
org.apache.ignite.internal.util.worker.GridWorker.run(GridWorker.java:120)
        at java.lang.Thread.run(Thread.java:748)
javax.cache.CacheException: Invalid schema state (duplicate index found):
null
        at
org.apache.ignite.internal.processors.cache.IgniteCacheProxyImpl.query(IgniteCacheProxyImpl.java:697)
        at
org.apache.ignite.internal.processors.cache.IgniteCacheProxyImpl.query(IgniteCacheProxyImpl.java:636)
        at
org.apache.ignite.internal.processors.cache.GatewayProtectedCacheProxy.query(GatewayProtectedCacheProxy.java:388)
        at
net.aline.cloudedh.base.database.IgniteTable._createIndex(IgniteTable.java:99)
        at net.aline.cloudedh.base.database.BigTable.createIndex(BigTable.java:234)
        at net.aline.cloudedh.base.database.BigTable.createIndex(BigTable.java:246)
        at
net.aline.cloudedh.base.framework.DACEngine.createIndexOnTable(DACEngine.java:502)
        at
net.aline.cloudedh.base.framework.DACOperationsTest.main(DACOperationsTest.java:24)
Caused by: class
org.apache.ignite.internal.processors.query.IgniteSQLException: Invalid
schema state (duplicate index found): null
        at
org.apache.ignite.internal.processors.query.h2.ddl.DdlStatementsProcessor.convert(DdlStatementsProcessor.java:644)
        at
org.apache.ignite.internal.processors.query.h2.ddl.DdlStatementsProcessor.runDdlStatement(DdlStatementsProcessor.java:505)
        at
org.apache.ignite.internal.processors.query.h2.IgniteH2Indexing.doRunPrepared(IgniteH2Indexing.java:2293)
        at
org.apache.ignite.internal.processors.query.h2.IgniteH2Indexing.querySqlFields(IgniteH2Indexing.java:2209)
        at
org.apache.ignite.internal.processors.query.GridQueryProcessor$4.applyx(GridQueryProcessor.java:2135)
        at
org.apache.ignite.internal.processors.query.GridQueryProcessor$4.applyx(GridQueryProcessor.java:2130)
        at
org.apache.ignite.internal.util.lang.IgniteOutClosureX.apply(IgniteOutClosureX.java:36)
        at
org.apache.ignite.internal.processors.query.GridQueryProcessor.executeQuery(GridQueryProcessor.java:2707)
        at
org.apache.ignite.internal.processors.query.GridQueryProcessor.querySqlFields(GridQueryProcessor.java:2144)
        at
org.apache.ignite.internal.processors.cache.IgniteCacheProxyImpl.query(IgniteCacheProxyImpl.java:685)
        ... 7 more

How can i resolve this issue?

Thanks.

Regards,
Shravya Nethula.



--
Sent from: http://apache-ignite-users.70518.x6.nabble.com/
Mikael Mikael
Reply | Threaded
Open this post in threaded view
|

Re: Failing to create index on Ignite table column

Hi!

It does look very strange because it has null value for the index name,
and it looks like it does a "x = map.put( indexname, entry)" in the code
and if x is not null (index already exists) you will get that exception,
but if the name of the index is null it's a bit strange that the map
returns a non null value, but maybe I am looking at the wrong place in
the source.

Does this happen every time you do it ? is this code executed just after
you create the cache ? what version of Ignite ?

Have you checked that you did not get any exception when you created
that cache ? the only things I can think of is if the binary marshaller
did complain about your column names, it does not store the names, just
a hash code so in theory you could get a name collision but if that was
the case I think Ignite would complain when you created the cache.

Mikael

Den 2019-01-07 kl. 08:42, skrev Shravya Nethula:

> Hi,
>
> I successfully created an Ignite table named User. Now I want to create 3
> indexes on id, cityId, age columns in User table. Indexes were successfully
> created on id and cityId columns. But I am getting the following "duplicate
> index found" error though I am trying to create index for the first time for
> age column:
>
>>>>>> Generated sql : CREATE INDEX  ON User (id asc)
>>>>>> Successfully created index on id column
>>>>>> Generated sql : CREATE INDEX  ON User (cityId asc)
>>>>>> Successfully created index on cityId column
>>>>>> Generated sql : CREATE INDEX  ON User (age asc)
>>>>>> Failed to create index on age column
>>>>>> Invalid schema state (duplicate index found): null
> [12:34:52] (err) DDL operation failureSchemaOperationException [code=0,
> msg=Invalid schema state (duplicate index found): null]
> at
> org.apache.ignite.internal.processors.query.GridQueryProcessor.prepareChangeOnNotStartedCache(GridQueryProcessor.java:1104)
> at
> org.apache.ignite.internal.processors.query.GridQueryProcessor.startSchemaChange(GridQueryProcessor.java:627)
> at
> org.apache.ignite.internal.processors.query.GridQueryProcessor.onSchemaPropose(GridQueryProcessor.java:488)
> at
> org.apache.ignite.internal.processors.cache.GridCacheProcessor.processCustomExchangeTask(GridCacheProcessor.java:378)
> at
> org.apache.ignite.internal.processors.cache.GridCachePartitionExchangeManager$ExchangeWorker.processCustomTask(GridCachePartitionExchangeManager.java:2475)
> at
> org.apache.ignite.internal.processors.cache.GridCachePartitionExchangeManager$ExchangeWorker.body0(GridCachePartitionExchangeManager.java:2620)
> at
> org.apache.ignite.internal.processors.cache.GridCachePartitionExchangeManager$ExchangeWorker.body(GridCachePartitionExchangeManager.java:2539)
> at
> org.apache.ignite.internal.util.worker.GridWorker.run(GridWorker.java:120)
> at java.lang.Thread.run(Thread.java:748)
> javax.cache.CacheException: Invalid schema state (duplicate index found):
> null
> at
> org.apache.ignite.internal.processors.cache.IgniteCacheProxyImpl.query(IgniteCacheProxyImpl.java:697)
> at
> org.apache.ignite.internal.processors.cache.IgniteCacheProxyImpl.query(IgniteCacheProxyImpl.java:636)
> at
> org.apache.ignite.internal.processors.cache.GatewayProtectedCacheProxy.query(GatewayProtectedCacheProxy.java:388)
> at
> net.aline.cloudedh.base.database.IgniteTable._createIndex(IgniteTable.java:99)
> at net.aline.cloudedh.base.database.BigTable.createIndex(BigTable.java:234)
> at net.aline.cloudedh.base.database.BigTable.createIndex(BigTable.java:246)
> at
> net.aline.cloudedh.base.framework.DACEngine.createIndexOnTable(DACEngine.java:502)
> at
> net.aline.cloudedh.base.framework.DACOperationsTest.main(DACOperationsTest.java:24)
> Caused by: class
> org.apache.ignite.internal.processors.query.IgniteSQLException: Invalid
> schema state (duplicate index found): null
> at
> org.apache.ignite.internal.processors.query.h2.ddl.DdlStatementsProcessor.convert(DdlStatementsProcessor.java:644)
> at
> org.apache.ignite.internal.processors.query.h2.ddl.DdlStatementsProcessor.runDdlStatement(DdlStatementsProcessor.java:505)
> at
> org.apache.ignite.internal.processors.query.h2.IgniteH2Indexing.doRunPrepared(IgniteH2Indexing.java:2293)
> at
> org.apache.ignite.internal.processors.query.h2.IgniteH2Indexing.querySqlFields(IgniteH2Indexing.java:2209)
> at
> org.apache.ignite.internal.processors.query.GridQueryProcessor$4.applyx(GridQueryProcessor.java:2135)
> at
> org.apache.ignite.internal.processors.query.GridQueryProcessor$4.applyx(GridQueryProcessor.java:2130)
> at
> org.apache.ignite.internal.util.lang.IgniteOutClosureX.apply(IgniteOutClosureX.java:36)
> at
> org.apache.ignite.internal.processors.query.GridQueryProcessor.executeQuery(GridQueryProcessor.java:2707)
> at
> org.apache.ignite.internal.processors.query.GridQueryProcessor.querySqlFields(GridQueryProcessor.java:2144)
> at
> org.apache.ignite.internal.processors.cache.IgniteCacheProxyImpl.query(IgniteCacheProxyImpl.java:685)
> ... 7 more
>
> How can i resolve this issue?
>
> Thanks.
>
> Regards,
> Shravya Nethula.
>
>
>
> --
> Sent from: http://apache-ignite-users.70518.x6.nabble.com/
>
Shravya Nethula Shravya Nethula
Reply | Threaded
Open this post in threaded view
|

Re: Failing to create index on Ignite table column

Hi,

We are using Ignite 2.7.0 version. Yes this issue is coming up each time I
try to create a new table and create indexes on some columns of the table.

The creation of indexes code occurs just after the table creation code. The
table is successfully created and indexes are created successfully on 1 or 2
columns. But for rest of the columns creation of index fails.

There were no exceptions during creation of table.

Regards,
Shravya Nethula.



--
Sent from: http://apache-ignite-users.70518.x6.nabble.com/
Shravya Nethula Shravya Nethula
Reply | Threaded
Open this post in threaded view
|

Re: Failing to create index on Ignite table column

Hi,

Is there any way to check the list of column names on which index has been
created for a particular table?

Regards,
Shravya Nethula.



--
Sent from: http://apache-ignite-users.70518.x6.nabble.com/
Shravya Nethula Shravya Nethula
Reply | Threaded
Open this post in threaded view
|

Re: Failing to create index on Ignite table column

In reply to this post by Mikael
Hi,

Previously I used the following query:
CREATE INDEX  ON User (age asc)
In the above query, I explicitly didn't give the index name as I was
expecting Ignite to take its auto-generated index name. And it was throwing
"Invalid schema state (duplicate index found): null " exception.

Now I have explicitly given the index name and executed the following query:
CREATE INDEX User_age_asc_IDX ON User (age asc)
And it worked successfully.

Now I am able to create multiple indexes on columns one after the other
successfully (which wasn't the case previously).

Regards,
Shravya Nethula.



--
Sent from: http://apache-ignite-users.70518.x6.nabble.com/
Stanislav Lukyanov Stanislav Lukyanov
Reply | Threaded
Open this post in threaded view
|

RE: Failing to create index on Ignite table column

In reply to this post by Shravya Nethula

I know one way to do that – connect via SQLLine and execute !indexes command.

Check out this doc https://apacheignite-sql.readme.io/docs/sqlline

 

Stan

 

From: [hidden email]
Sent: 7 января 2019 г. 13:49
To: [hidden email]
Subject: Re: Failing to create index on Ignite table column

 

Hi,

 

Is there any way to check the list of column names on which index has been

created for a particular table?

 

Regards,

Shravya Nethula.

 

 

 

--

Sent from: http://apache-ignite-users.70518.x6.nabble.com/

 

Shravya Nethula Shravya Nethula
Reply | Threaded
Open this post in threaded view
|

RE: Failing to create index on Ignite table column

Hi Stan,

Thank you! This information is helpful.

Do you know any Ignite API through which I can get the indexes of a
particular table?

Regards,
Shravya Nethula.



--
Sent from: http://apache-ignite-users.70518.x6.nabble.com/
Stanislav Lukyanov Stanislav Lukyanov
Reply | Threaded
Open this post in threaded view
|

RE: Failing to create index on Ignite table column

Don’t think there is any Ignite API for that yet.

 

Stan

 

From: [hidden email]
Sent: 16 января 2019 г. 12:42
To: [hidden email]
Subject: RE: Failing to create index on Ignite table column

 

Hi Stan,

 

Thank you! This information is helpful.

 

Do you know any Ignite API through which I can get the indexes of a

particular table?

 

Regards,

Shravya Nethula.

 

 

 

--

Sent from: http://apache-ignite-users.70518.x6.nabble.com/