How to get column names for a query in Ignite thin client mode

classic Classic list List threaded Threaded
9 messages Options
Shravya Nethula Shravya Nethula
Reply | Threaded
Open this post in threaded view
|

How to get column names for a query in Ignite thin client mode

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.

Ilya Kazakov Ilya Kazakov
Reply | Threaded
Open this post in threaded view
|

Re: How to get column names for a query in Ignite thin client mode

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 <[hidden email]>:
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.

Alex Plehanov Alex Plehanov
Reply | Threaded
Open this post in threaded view
|

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 <[hidden email]>:
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 <[hidden email]>:
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.

Shravya Nethula Shravya Nethula
Reply | Threaded
Open this post in threaded view
|

Re: How to get column names for a query in Ignite thin client mode

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 <[hidden email]>
Sent: Tuesday, November 3, 2020 12:13 PM
To: [hidden email] <[hidden email]>
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 <[hidden email]>:
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 <[hidden email]>:
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.

Alex Plehanov Alex Plehanov
Reply | Threaded
Open this post in threaded view
|

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 <[hidden email]>:
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 <[hidden email]>
Sent: Tuesday, November 3, 2020 12:13 PM
To: [hidden email] <[hidden email]>
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 <[hidden email]>:
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 <[hidden email]>:
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.

Shravya Nethula Shravya Nethula
Reply | Threaded
Open this post in threaded view
|

Re: How to get column names for a query in Ignite thin client mode

Hi Alex,

Thank you for the information.
Is there a possibility of getting the datatypes in thick client mode?

Regards,

Shravya Nethula,

BigData Developer,


Hyderabad.


From: Alex Plehanov <[hidden email]>
Sent: Thursday, November 5, 2020 12:03 PM
To: [hidden email] <[hidden email]>
Cc: Bhargav Kunamneni <[hidden email]>
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 <[hidden email]>:
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 <[hidden email]>
Sent: Tuesday, November 3, 2020 12:13 PM
To: [hidden email] <[hidden email]>
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 <[hidden email]>:
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 <[hidden email]>:
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.

Shravya Nethula Shravya Nethula
Reply | Threaded
Open this post in threaded view
|

Re: How to get column names for a query in Ignite thin client mode

Hi,

Any update on this?
Any help is much apppreciated!

Regards,

Shravya Nethula,

BigData Developer,


Hyderabad.


From: Shravya Nethula <[hidden email]>
Sent: Thursday, November 5, 2020 4:54 PM
To: [hidden email] <[hidden email]>
Cc: Bhargav Kunamneni <[hidden email]>
Subject: Re: How to get column names for a query in Ignite thin client mode
 
Hi Alex,

Thank you for the information.
Is there a possibility of getting the datatypes in thick client mode?

Regards,

Shravya Nethula,

BigData Developer,


Hyderabad.


From: Alex Plehanov <[hidden email]>
Sent: Thursday, November 5, 2020 12:03 PM
To: [hidden email] <[hidden email]>
Cc: Bhargav Kunamneni <[hidden email]>
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 <[hidden email]>:
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 <[hidden email]>
Sent: Tuesday, November 3, 2020 12:13 PM
To: [hidden email] <[hidden email]>
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 <[hidden email]>:
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 <[hidden email]>:
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.

ilya.kasnacheev ilya.kasnacheev
Reply | Threaded
Open this post in threaded view
|

Re: How to get column names for a query in Ignite thin client mode

Hello!

You can find out data types while using JDBC API, by using ResultSetMetaData and DatabaseMetaData interfaces.

Regards,
--
Ilya Kasnacheev


пн, 9 нояб. 2020 г. в 10:42, Shravya Nethula <[hidden email]>:
Hi,

Any update on this?
Any help is much apppreciated!

Regards,

Shravya Nethula,

BigData Developer,


Hyderabad.


From: Shravya Nethula <[hidden email]>
Sent: Thursday, November 5, 2020 4:54 PM
To: [hidden email] <[hidden email]>
Cc: Bhargav Kunamneni <[hidden email]>
Subject: Re: How to get column names for a query in Ignite thin client mode
 
Hi Alex,

Thank you for the information.
Is there a possibility of getting the datatypes in thick client mode?

Regards,

Shravya Nethula,

BigData Developer,


Hyderabad.


From: Alex Plehanov <[hidden email]>
Sent: Thursday, November 5, 2020 12:03 PM
To: [hidden email] <[hidden email]>
Cc: Bhargav Kunamneni <[hidden email]>
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 <[hidden email]>:
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 <[hidden email]>
Sent: Tuesday, November 3, 2020 12:13 PM
To: [hidden email] <[hidden email]>
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 <[hidden email]>:
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 <[hidden email]>:
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.

Shravya Nethula Shravya Nethula
Reply | Threaded
Open this post in threaded view
|

Re: How to get column names for a query in Ignite thin client mode

Thank you Ilya

Regards,

Shravya Nethula,

BigData Developer,


Hyderabad.


From: Ilya Kasnacheev <[hidden email]>
Sent: Wednesday, November 11, 2020 7:46 PM
To: [hidden email] <[hidden email]>
Cc: Bhargav Kunamneni <[hidden email]>
Subject: Re: How to get column names for a query in Ignite thin client mode
 
Hello!

You can find out data types while using JDBC API, by using ResultSetMetaData and DatabaseMetaData interfaces.

Regards,
--
Ilya Kasnacheev


пн, 9 нояб. 2020 г. в 10:42, Shravya Nethula <[hidden email]>:
Hi,

Any update on this?
Any help is much apppreciated!

Regards,

Shravya Nethula,

BigData Developer,


Hyderabad.


From: Shravya Nethula <[hidden email]>
Sent: Thursday, November 5, 2020 4:54 PM
To: [hidden email] <[hidden email]>
Cc: Bhargav Kunamneni <[hidden email]>
Subject: Re: How to get column names for a query in Ignite thin client mode
 
Hi Alex,

Thank you for the information.
Is there a possibility of getting the datatypes in thick client mode?

Regards,

Shravya Nethula,

BigData Developer,


Hyderabad.


From: Alex Plehanov <[hidden email]>
Sent: Thursday, November 5, 2020 12:03 PM
To: [hidden email] <[hidden email]>
Cc: Bhargav Kunamneni <[hidden email]>
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 <[hidden email]>:
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 <[hidden email]>
Sent: Tuesday, November 3, 2020 12:13 PM
To: [hidden email] <[hidden email]>
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 <[hidden email]>:
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 <[hidden email]>:
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.