Currently, only field names can be obtained, there is no information about
field data types in thin client protocol.

ср, 4 нояб. 2020 г. в 13:58, Shravya Nethula <
shravya.neth...@aline-consulting.com>:

> Ilya and Alex,
>
> Thank you for information.
> Can you please also suggest how to get the datatypes of those columns
> obtained from the query?
>
>
> Regards,
>
> Shravya Nethula,
>
> BigData Developer,
>
>
> Hyderabad.
>
>
> ------------------------------
> *From:* Alex Plehanov <plehanov.a...@gmail.com>
> *Sent:* Tuesday, November 3, 2020 12:13 PM
> *To:* user@ignite.apache.org <user@ignite.apache.org>
> *Subject:* Re: How to get column names for a query in Ignite thin client
> mode
>
> Columns information is read by thin-client only after the first data
> request, so you need to read at least one row to get columns.
>
> вт, 3 нояб. 2020 г. в 09:31, Ilya Kazakov <kazakov.i...@gmail.com>:
>
> Hello, Shravya! It is very interesting! I am trying to reproduce your
> case, and what I see. I can see column names in the thin client only after
> query execution.
>
> For example:
>
> ClientConfiguration clientConfig = new 
> ClientConfiguration().setAddresses("127.0.0.1");
> try(IgniteClient thinClient = Ignition.startClient(clientConfig)){
>     SqlFieldsQuery sql = new SqlFieldsQuery("SELECT * FROM T1");
>     FieldsQueryCursor cursor = thinClient.query(sql);
>     cursor.getAll();
>     int count = cursor.getColumnsCount();
>     System.out.println(count);
>     List<String> columnNames = new ArrayList<>();
>     for (int i = 0; i < count; i++) {
>         String columnName = cursor.getFieldName(i);
>         columnNames.add(columnName);
>     }
>     System.out.println("columnNames:::"+columnNames);
> }
>
>
> But if this is the correct behavior I do not know yet, I will try to find
> out.
>
> --------------------------------
> Ilya Kazakov
>
> вт, 3 нояб. 2020 г. в 12:51, Shravya Nethula <
> shravya.neth...@aline-consulting.com>:
>
> Hi,
>
> *For Ignite thick client, the column names for a given sql query are
> coming up as expected with the following code:*
> public class ClientNode {
>
>     public static void main(String[] args) {
>         IgniteConfiguration igniteCfg = new IgniteConfiguration();
>         igniteCfg.setClientMode(true);
>
>         Ignite ignite = Ignition.start(igniteCfg);
>         *IgniteCache foo **= ignite.getOrCreateCache("foo");*
>
>         SqlFieldsQuery sql = new SqlFieldsQuery("SELECT * FROM person");
>         *FieldsQueryCursor cursor = foo.query(sql);*
>         int count = cursor.getColumnsCount();
>         List<String> columnNames = new ArrayList<>();
>
>         for (int i = 0; i < count; i++) {
>           String columnName = cursor.getFieldName(i);
>           columnNames.add(columnName);
>         }
>         System.out.println("columnNames:::"+columnNames);
>
>  } }
>  *Output:*
>  *columnNames:::[ID, NAME, LAST_NAME, AGE, CITY_ID, EMAIL_ID]
> *
> *On the other hand, for thin client, the column names are coming up as empty 
> list.*
> The following is the code:
> public class ClientNode {
>
>     public static void main(String[] args) {
>         ClientConfiguration clientConfig = new ClientConfiguration();
>         cc.setUserName("username");
>         cc.setUserPassword("password");
>
>         *IgniteClient thinClient = Ignition.startClient(clientConfig);*
>
>         SqlFieldsQuery sql = new SqlFieldsQuery("SELECT * FROM person");
>         *FieldsQueryCursor cursor = thinClient.query(sql);*
>         int count = cursor.getColumnsCount();
>         List<String> columnNames = new ArrayList<>();
>
>         for (int i = 0; i < count; i++) {
>           String columnName = cursor.getFieldName(i);
>           columnNames.add(columnName);
>         }
>         System.out.println("columnNames:::"+columnNames);
>
>  } }
>
> *Output:**columnNames:::[ ]*
>
> While using IgniteCache.query(SqlFieldsQuery), the column names are
> coming up. But while using IgniteClient.query(SqlFieldsQuery), the column
> names are not coming up. Are we missing any configurations? Is there
> something wrong in the code? And also is there anyway in which we can
> identify the datatype of columns given in the query! We are looking for
> the datatype of the columns in the query but not the datatype of columns in
> the table!
>
> Any help here will be much appreciated!
> Thanks in advance!
>
>
>
> Regards,
>
> Shravya Nethula,
>
> BigData Developer,
>
>
> Hyderabad.
>
>

Reply via email to