Hi, Prasad!

I created a simple gist with your example, please have a look -
https://gist.github.com/timoninmaxim/534d36b23542140555901ddc0e853d3b

Some notes here:
1. QueryEntity has `setTableName` property. Set up it and then you can
simply use it in your SQL query instead of a simple class name. It's more
clear.
2. Value type is required to be set up with a full class name to correctly
match insertion values with related tables. You can create a class
PersonSQL in another package, and try to put instances to `cache`. Then
ScanQuery will show you them, but they won't be part of your `table`
(thanks the specified value type), and `select count(*)` from *table*
returns 0.

Also I found that you defined QueryEntity with `keyFieldName = name`, but
you put items to the cache with `key = ssn`. Just let you know, it may lead
to some misses in table / cache.


On Wed, Oct 27, 2021 at 12:53 AM Prasad Kommoju <pkomm...@futurewei.com>
wrote:

> Hi Maksim,
>
>
>
> I did “Reply” and that must have retained only user@ignite.
>
>
>
> I was redacting the name (replace with blah) but it is the same in both
> places. The thing that is not clear to me is should the name in the config
> file (and the code) be fully qualified class name or simple name
> (PersonSQL). One of them seems to throw failed to set schema and the other
> empty results.
>
>
>
>
>
>
>
> ---------------------
>
> Regards,
>
> Prasad Kommoju
>
>
>
> *From:* Maksim Timonin <timonin.ma...@gmail.com>
> *Sent:* Tuesday, October 26, 2021 2:36 PM
> *To:* user@ignite.apache.org; Prasad Kommoju <pkomm...@futurewei.com>
> *Subject:* Re: Problem with SqlFieldsQuery
>
>
>
> Hi, Prasad!
>
>
>
> Looks like you missed the topic, and posted your code to another thread.
> But nevertheless, did you check the package name of PersonSQL class in the
> CacheConfiguration and in your insertion code?
>
>
>
> On Tue, Oct 26, 2021 at 10:15 AM Maksim Timonin <timonin.ma...@gmail.com>
> wrote:
>
> Hi, Prasad!
>
>
>
> Could you please show how you insert data to the table?
>
>
>
> As I see you defined table with "com.*blah*.sfqx.SqlFieldQueryXML$PersonSQL"
> but cache scan returns objects with value type 
> "com.*futurewei*.sfqx.SqlFieldQueryXML$PersonSQL".
> Can this misprint be a reason?
>
>
>
> On Tue, Oct 26, 2021 at 5:03 AM Prasad Kommoju <pkomm...@futurewei.com>
> wrote:
>
> I create a cache with QueryEntities (through ignite configuration file)
> and use SqlFieldsQuery to query it.
>
>
>
> I can see the cache in ignitevisor and it appears as table through sqlline
> interface. While ignitevisor shows the data sqlline tool does not.
>
>
>
> Here is the configuration:
>
>
>
> …
>
> <property name="defaultDataRegionConfiguration">
>
>                     <bean
> class="org.apache.ignite.configuration.DataRegionConfiguration">
>
>                         <property name="persistenceEnabled" value="true"/>
>
>                     </bean>
>
>                 </property>
>
>             </bean>
>
>         </property>
>
>
>
>         <property name="cacheConfiguration">
>
>             <bean
> class="org.apache.ignite.configuration.CacheConfiguration">
>
>                 <property name="name" value="PersonSQL"/>
>
>                 <!-- Configure query entities -->
>
>                 <property name="queryEntities">
>
>                     <list>
>
>                         <bean class="org.apache.ignite.cache.QueryEntity">
>
>                             <!-- Setting  the type of the key -->
>
>                             <property name="keyType"
> value="java.lang.String"/>
>
>
>
>                             <property name="keyFieldName" value="name"/>
>
>
>
>                             <!-- Setting type of the value -->
>
>                             <property name="valueType" value="
> com.blah.sfqx.SqlFieldQueryXML.PersonSQL"/>
>
>
>
>                             <!-- Defining fields that will be either
> indexed or queryable.  Indexed fields are added to the 'indexes' list
> below.-->
>
>                             <property name="fields">
>
>                                 <map>
>
>                                     <entry key="ssn"
> value="java.lang.String"/>
>
>                                     <entry key="name"
> value="java.lang.String"/>
>
>                                     <entry key="address"
> value="com.futurewei.sfqx.Address"/>
>
>                                 </map>
>
>                             </property>
>
>                             <!-- Defining indexed fields.-->
>
>                             <property name="indexes">
>
>                                     <!-- Single field (aka. column) index
> -->
>
>                                     <bean
> class="org.apache.ignite.cache.QueryIndex">
>
>                                         <constructor-arg value="name"/>
>
>                                     </bean>
>
>                                 </property>
>
> …
>
>
>
> Here is the ignitevisor output (truncated):
>
> visor> cache -scan -c=@c1
>
> Entries in  cache: PersonSQL
>
>
> +========================================================================================================================================================================================================================================================================================================================================================+
>
> |    Key Class     |     Key      |           Value Class
> |
>                                                             Value
> |
>
>
> +========================================================================================================================================================================================================================================================================================================================================================+
>
> | java.lang.String | 7336-18-3968 | o.a.i.i.binary.BinaryObjectImpl |
> com.futurewei.sfqx.SqlFieldQueryXML$PersonSQL [hash=-900842615,
> ssn=7336-18-3968, name=uuykixzs,
> address=com.blah.sfqx.SqlFieldQueryXML$Address [idHash=302301205,
> hash=239196030, houseNumber=2606, streetName=xjzxzzpazdzx, city=uwjitlprkd,
> state=dzhiiisjq, zip=73550]]   |
>
> | java.lang.String | 6198-10-5000 | o.a.i.i.binary.BinaryObjectImpl |
> com.futurewei.sfqx.SqlFieldQueryXML$PersonSQL [hash=426078934,
> ssn=6198-10-5000, name=lwthwezu,
> address=com.blah.sfqx.SqlFieldQueryXML$Address [idHash=1460034609,
> hash=-1811594149, houseNumber=9161, streetName=npruuwxhwbai,
> city=yxexraxvuu, state=cgxcrypcy, zip=91752]] |
>
> | java.lang.String | 9448-3-1310  | o.a.i.i.binary.BinaryObjectImpl |
> com.futurewei.sfqx.SqlFieldQueryXML$PersonSQL [hash=402062681,
> ssn=9448-3-1310, name=pyaujxzt,
> address=com.blah.sfqx.SqlFieldQueryXML$Address [idHash=710697527,
> hash=1654079158, houseNumber=2267, streetName=xpgtnbzngftv,
> city=flbtopwban, state=jkdrlxwqj, zip=11144]]    |
>
> | java.lang.String | 9880-7-3532
>
>
>
> Here is the sqlline output:
>
> 0: jdbc:ignite:thin://127.0.0.1:10800
> <https://nam11.safelinks.protection.outlook.com/?url=http%3A%2F%2F127.0.0.1%3A10800%2F&data=04%7C01%7Cpkommoju%40futurewei.com%7C305a2087d173456d353a08d998c8ad33%7C0fee8ff2a3b240189c753a1d5591fedc%7C1%7C0%7C637708809942434963%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C1000&sdata=MAUowveQMDm2AVKUYJg4UnmKk14VV5MD7XnBIYzJMo4%3D&reserved=0>>
> !tables
>
>
> +-----------+-------------+-----------------------------+------------+---------+----------+------------+-----------+---------------------------+----------------+
>
> | TABLE_CAT | TABLE_SCHEM |         TABLE_NAME          | TABLE_TYPE |
> REMARKS | TYPE_CAT | TYPE_SCHEM | TYPE_NAME | SELF_REFERENCING_COL_NAME |
> REF_GENERATION |
>
>
> +-----------+-------------+-----------------------------+------------+---------+----------+------------+-----------+---------------------------+----------------+
>
> | IGNITE    | PersonSQL   | PERSONSQL                   | TABLE
> |         |          |            |           |
> |                |
>
> | IGNITE    | SYS         | BASELINE_NODES              | VIEW
> |         |          |            |           |
> |                |
>
> | IGNITE    | SYS         | BINARY_METADATA
>
> …
>
> 0: jdbc:ignite:thin://127.0.0.1:10800
> <https://nam11.safelinks.protection.outlook.com/?url=http%3A%2F%2F127.0.0.1%3A10800%2F&data=04%7C01%7Cpkommoju%40futurewei.com%7C305a2087d173456d353a08d998c8ad33%7C0fee8ff2a3b240189c753a1d5591fedc%7C1%7C0%7C637708809942444921%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C1000&sdata=VWyJYTxWsa2E8VHGNpmybS7MgEdxSYUjDz4lBSRAjEs%3D&reserved=0>>
> select count (*) from "PersonSQL".PERSONSQL;
>
> +----------+
>
> | COUNT(*) |
>
> +----------+
>
> | 0        |
>
>
>
>
>
>
>
>
>
>
>
> From Java program, I get
>
> SQL Query failed: Ignite failed to process request [2]: Failed to set
> schema for DB connection for thread [schema="PersonSQL"] (server status
> code [1])
>
>
>
> If the cache name in the program is changed to “com…..PersonSQL” the error
> is Cache does not exist.
>
>
>
> Any help in unraveling this problem will be greatly appreciated.
>
>
>
> ---------------------
>
> Regards,
>
> Prasad Kommoju
>
>
>
>

Reply via email to