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