Hi Illya,
Thanks for responding.
That makes sense - I figured something like that but didn't know exactly
what.
Is it possible to get the existing key_type and value_type for tables?
The reason is because we have tables in production and they were not
created with key_type and value_type. We actually thought this only applied
when you use Java classes with annotations.

In the SYS table somewhere perhaps?


On Mon, Feb 15, 2021 at 11:19 AM Ilya Kasnacheev <ilya.kasnach...@gmail.com>
wrote:

> Hello!
>
> Two tables have different name of an indexed binary type by default.
>
> Try
> repo.query("create table page1(a varchar, b varchar, c varchar, PRIMARY
> KEY (a, b)) WITH \"cache_name=page1, key_type=PageKey, value_type=Page\"")
> repo.query("create table page2(a varchar, b varchar, c varchar, PRIMARY
> KEY (a, b)) WITH \"cache_name=page2, key_type=PageKey, value_type=Page\"")
>
> Regards,
> --
> Ilya Kasnacheev
>
>
> сб, 13 февр. 2021 г. в 19:32, Courtney Robinson <courtney.robin...@hypi.io
> >:
>
>> Due to an issue I posted about in a previous thread
>> http://apache-ignite-users.70518.x6.nabble.com/Basic-SQL-pagination-returning-incorrect-results-td35443.html
>>
>> I've written a work around to use the streamer interface with a ScanQuery
>> to duplicate a cache.
>> Both are created from SQL using something like this:
>>
>> repo.query("create table page1(a varchar, b varchar, c varchar, PRIMARY KEY 
>> (a, b)) WITH \"cache_name=page1\"")
>> repo.query("create table page2(a varchar, b varchar, c varchar, PRIMARY KEY 
>> (a, b)) WITH \"cache_name=page2\"")
>>
>> The data is copied, printing the size shows 100 as expected in the test
>> but a SQL query on page2 table returns 0 rows.
>>
>> def copied = repo.query("SELECT * FROM page2 LIMIT 101")
>>
>> Gets nothing. The copy function used is below. I'm presuming I've missed
>> a step and the SQL index or something else is not being done. How should
>> this be written to duplicate all data from page1 into page2 table/cache.
>>
>> public void copy(String fromTableName, String toTableName) {
>>   var ignite = ctx.ignite;
>>   try (
>>     IgniteCache<Object, Object> from = ignite.cache(fromTableName);
>>     IgniteCache<Object, Object> to = ignite.cache(toTableName)
>>   ) {
>>     if (from == null || to == null) {
>>       throw new IllegalArgumentException(format("Both from and to tables 
>> must exist. from: %s, to: %s", fromTableName, toTableName));
>>     }
>>     try (
>>       IgniteDataStreamer<Object, Object> strmr = 
>> ignite.dataStreamer(toTableName/*from.getName()*/);
>>       var cursor = from.withKeepBinary().query(new ScanQuery<>())
>>     ) {
>>       strmr.allowOverwrite(true);
>>       strmr.keepBinary(true);
>>       //strmr.receiver(StreamVisitor.from((cache, e) -> to.put(e.getKey(), 
>> e.getValue())));
>>       for (Cache.Entry<Object, Object> e : cursor) {
>>         strmr.addData(e.getKey(), e.getValue());
>>       }
>>       //strmr.flush();
>>     }
>>     log.info("Total in target cache {}", to.sizeLong(CachePeekMode.ALL));
>>   }
>> }
>>
>>
>>
>> Regards,
>> Courtney Robinson
>> Founder and CEO, Hypi
>> Tel: ++44 208 123 2413 (GMT+0) <https://hypi.io>
>>
>> <https://hypi.io>
>> https://hypi.io
>>
>

Reply via email to