Hi Alex, Thank you for the information. Is there a possibility of getting the datatypes in thick client mode?
Regards, Shravya Nethula, BigData Developer, [cid:0d6f1002-8e08-4cec-a2dd-85d2391ee2f7] Hyderabad. ________________________________ From: Alex Plehanov <[email protected]> Sent: Thursday, November 5, 2020 12:03 PM To: [email protected] <[email protected]> Cc: Bhargav Kunamneni <[email protected]> Subject: Re: How to get column names for a query in Ignite thin client mode 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 <[email protected]<mailto:[email protected]>>: 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, [cid:1759717cc2dd11dd2572] Hyderabad. ________________________________ From: Alex Plehanov <[email protected]<mailto:[email protected]>> Sent: Tuesday, November 3, 2020 12:13 PM To: [email protected]<mailto:[email protected]> <[email protected]<mailto:[email protected]>> 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 <[email protected]<mailto:[email protected]>>: 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 <[email protected]<mailto:[email protected]>>: 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, [cid:1759717cc2dbe2ca0301] Hyderabad.
