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. > >