[jira] [Comment Edited] (IGNITE-4045) .NET: Support DML API

2016-12-27 Thread Pavel Tupitsyn (JIRA)

[ 
https://issues.apache.org/jira/browse/IGNITE-4045?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=15778622#comment-15778622
 ] 

Pavel Tupitsyn edited comment on IGNITE-4045 at 12/27/16 4:23 PM:
--

1) BinaryObject.Equals fixed.
2) We don't need this. Identity resolver in .NET is needed only to write 
correct hash code to a stream. Enums are written as [typeId, value]. There is 
no hash code. In Java there is special handing for BinaryEnum, but I suspect 
that this code is never called. Let's see what should be done in a separate 
task: IGNITE-4500
3) There is already a ticket: IGNITE-4397. In current ticket FieldComparer is 
hidden from public API, please ignore it.
4) I agree. This is done intentionally because we are on a very hot path here 
and want to avoid any allocations or overhead associated with {{ReadByte}} and 
{{ReadByteArray}}. I've refactored this to a generic {{IBinaryStream.Apply}} 
method which allows operating on byte pointer directly without allocations.
5) IGNITE-4495

* Implemented public methods of {{IEqualityComparer}}
* Fixed hash code handling for wrappers ({{DateTimeHolder}}, 
{{SerializableObjectHolder}})
* Fixed array handling in BinaryObject.Equals
* Added a lot more tests


was (Author: ptupitsyn):
1) BinaryObject.Equals fixed.
2) We don't need this. Identity resolver in .NET is needed only to write 
correct hash code to a stream. Enums are written as [typeId, value]. There is 
no hash code. In Java there is special handing for BinaryEnum, but I suspect 
that this code is never called. Let's see what should be done in a separate 
task: IGNITE-4500
3) There is already a ticket: IGNITE-4397. In current ticket FieldComparer is 
hidden from public API, please ignore it.
4) I agree. This is done intentionally because we are on a very hot path here 
and want to avoid any allocations or overhead associated with {{ReadByte}} and 
{{ReadByteArray}}. I've refactored this to a generic {{IBinaryStream.Apply}} 
method which allows operating on byte pointer directly without allocations.
5) IGNITE-4495

Implemented public methods of {{IEqualityComparer}}, fixed hash code handling 
for wrappers ({{DateTimeHolder}}, {{SerializableObjectHolder}}), added a lot 
more tests.

> .NET: Support DML API
> -
>
> Key: IGNITE-4045
> URL: https://issues.apache.org/jira/browse/IGNITE-4045
> Project: Ignite
>  Issue Type: New Feature
>  Components: platforms
>Reporter: Denis Magda
>Assignee: Pavel Tupitsyn
>  Labels: roadmap
> Fix For: 2.0
>
>
> Ignite's Java component will provide support for DML soon (IGNITE-2294). At 
> she same time DML will be supported at the level of ODBC and JDBC drivers.
> As the next step we should include the similar functionality into Ignite.NET 
> by doing the following:
> - Implement DML API;
> - Enhance {{QueryExample.cs}} by doing INSERTs instead of cache.puts and 
> adding UPDATE and DELETE operation examples.
> - Add documentation to Ignite.NET readme.io covering the feature. Most like 
> most of the content can be take from the general documentation when this 
> ticket IGNITE-4018 is ready 
> (https://apacheignite.readme.io/docs/distributed-dml).



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)


[jira] [Comment Edited] (IGNITE-4045) .NET: Support DML API

2016-12-27 Thread Pavel Tupitsyn (JIRA)

[ 
https://issues.apache.org/jira/browse/IGNITE-4045?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=15778622#comment-15778622
 ] 

Pavel Tupitsyn edited comment on IGNITE-4045 at 12/27/16 4:21 PM:
--

1) BinaryObject.Equals fixed.
2) We don't need this. Identity resolver in .NET is needed only to write 
correct hash code to a stream. Enums are written as [typeId, value]. There is 
no hash code. In Java there is special handing for BinaryEnum, but I suspect 
that this code is never called. Let's see what should be done in a separate 
task: IGNITE-4500
3) There is already a ticket: IGNITE-4397. In current ticket FieldComparer is 
hidden from public API, please ignore it.
4) I agree. This is done intentionally because we are on a very hot path here 
and want to avoid any allocations or overhead associated with {{ReadByte}} and 
{{ReadByteArray}}. I've refactored this to a generic {{IBinaryStream.Apply}} 
method which allows operating on byte pointer directly without allocations.
5) IGNITE-4495

Implemented public methods of {{IEqualityComparer}}, fixed hash code handling 
for wrappers ({{DateTimeHolder}}, {{SerializableObjectHolder}}), added a lot 
more tests.


was (Author: ptupitsyn):
2) We don't need this. Identity resolver in .NET is needed only to write 
correct hash code to a stream. Enums are written as [typeId, value]. There is 
no hash code. In Java there is special handing for BinaryEnum, but I suspect 
that this code is never called. Let's see what should be done in a separate 
task: IGNITE-4500
3) There is already a ticket: IGNITE-4397. In current ticket FieldComparer is 
hidden from public API, please ignore it.
4) I agree. This is done intentionally because we are on a very hot path here 
and want to avoid any allocations or overhead associated with {{ReadByte}} and 
{{ReadByteArray}}. I've refactored this to a generic {{IBinaryStream.Apply}} 
method which allows operating on byte pointer directly without allocations.
5) IGNITE-4495

> .NET: Support DML API
> -
>
> Key: IGNITE-4045
> URL: https://issues.apache.org/jira/browse/IGNITE-4045
> Project: Ignite
>  Issue Type: New Feature
>  Components: platforms
>Reporter: Denis Magda
>Assignee: Pavel Tupitsyn
>  Labels: roadmap
> Fix For: 2.0
>
>
> Ignite's Java component will provide support for DML soon (IGNITE-2294). At 
> she same time DML will be supported at the level of ODBC and JDBC drivers.
> As the next step we should include the similar functionality into Ignite.NET 
> by doing the following:
> - Implement DML API;
> - Enhance {{QueryExample.cs}} by doing INSERTs instead of cache.puts and 
> adding UPDATE and DELETE operation examples.
> - Add documentation to Ignite.NET readme.io covering the feature. Most like 
> most of the content can be take from the general documentation when this 
> ticket IGNITE-4018 is ready 
> (https://apacheignite.readme.io/docs/distributed-dml).



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)


[jira] [Comment Edited] (IGNITE-4045) .NET: Support DML API

2016-12-27 Thread Pavel Tupitsyn (JIRA)

[ 
https://issues.apache.org/jira/browse/IGNITE-4045?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=15778622#comment-15778622
 ] 

Pavel Tupitsyn edited comment on IGNITE-4045 at 12/27/16 12:04 PM:
---

2) We don't need this. Identity resolver in .NET is needed only to write 
correct hash code to a stream. Enums are written as [typeId, value]. There is 
no hash code. In Java there is special handing for BinaryEnum, but I suspect 
that this code is never called. Let's see what should be done in a separate 
task: IGNITE-4500
3) There is already a ticket: IGNITE-4397. In current ticket FieldComparer is 
hidden from public API, please ignore it.
4) I agree. This is done intentionally because we are on a very hot path here 
and want to avoid any allocations or overhead associated with {{ReadByte}} and 
{{ReadByteArray}}. I've refactored this to a generic {{IBinaryStream.Apply}} 
method which allows operating on byte pointer directly without allocations.
5) IGNITE-4495


was (Author: ptupitsyn):
2) We don't need this. Identity resolver in .NET is needed only to write 
correct hash code to a stream. Enums are written as [typeId, value]. There is 
no hash code.
3) There is already a ticket: IGNITE-4397. In current ticket FieldComparer is 
hidden from public API, please ignore it.
4) I agree. This is done intentionally because we are on a very hot path here 
and want to avoid any allocations or overhead associated with {{ReadByte}} and 
{{ReadByteArray}}. I've refactored this to a generic {{IBinaryStream.Apply}} 
method which allows operating on byte pointer directly without allocations.
5) IGNITE-4495

> .NET: Support DML API
> -
>
> Key: IGNITE-4045
> URL: https://issues.apache.org/jira/browse/IGNITE-4045
> Project: Ignite
>  Issue Type: New Feature
>  Components: platforms
>Reporter: Denis Magda
>Assignee: Pavel Tupitsyn
>  Labels: roadmap
> Fix For: 2.0
>
>
> Ignite's Java component will provide support for DML soon (IGNITE-2294). At 
> she same time DML will be supported at the level of ODBC and JDBC drivers.
> As the next step we should include the similar functionality into Ignite.NET 
> by doing the following:
> - Implement DML API;
> - Enhance {{QueryExample.cs}} by doing INSERTs instead of cache.puts and 
> adding UPDATE and DELETE operation examples.
> - Add documentation to Ignite.NET readme.io covering the feature. Most like 
> most of the content can be take from the general documentation when this 
> ticket IGNITE-4018 is ready 
> (https://apacheignite.readme.io/docs/distributed-dml).



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)


[jira] [Comment Edited] (IGNITE-4045) .NET: Support DML API

2016-12-26 Thread Pavel Tupitsyn (JIRA)

[ 
https://issues.apache.org/jira/browse/IGNITE-4045?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=15778622#comment-15778622
 ] 

Pavel Tupitsyn edited comment on IGNITE-4045 at 12/26/16 6:03 PM:
--

2) We don't need this. Identity resolver in .NET is needed only to write 
correct hash code to a stream. Enums are written as [typeId, value]. There is 
no hash code.
3) There is already a ticket: IGNITE-4397. In current ticket FieldComparer is 
hidden from public API, please ignore it.
4) I agree. This is done intentionally because we are on a very hot path here 
and want to avoid any allocations or overhead associated with {{ReadByte}} and 
{{ReadByteArray}}. I've refactored this to a generic {{IBinaryStream.Apply}} 
method which allows operating on byte pointer directly without allocations.
5) IGNITE-4495


was (Author: ptupitsyn):
3) There is already a ticket: IGNITE-4397. In current ticket FieldComparer is 
hidden from public API, please ignore it.
4) I agree. This is done intentionally because we are on a very hot path here 
and want to avoid any allocations or overhead associated with {{ReadByte}} and 
{{ReadByteArray}}. I've refactored this to a generic {{IBinaryStream.Apply}} 
method which allows operating on byte pointer directly without allocations.
5) IGNITE-4495

> .NET: Support DML API
> -
>
> Key: IGNITE-4045
> URL: https://issues.apache.org/jira/browse/IGNITE-4045
> Project: Ignite
>  Issue Type: New Feature
>  Components: platforms
>Reporter: Denis Magda
>Assignee: Pavel Tupitsyn
>  Labels: roadmap
> Fix For: 2.0
>
>
> Ignite's Java component will provide support for DML soon (IGNITE-2294). At 
> she same time DML will be supported at the level of ODBC and JDBC drivers.
> As the next step we should include the similar functionality into Ignite.NET 
> by doing the following:
> - Implement DML API;
> - Enhance {{QueryExample.cs}} by doing INSERTs instead of cache.puts and 
> adding UPDATE and DELETE operation examples.
> - Add documentation to Ignite.NET readme.io covering the feature. Most like 
> most of the content can be take from the general documentation when this 
> ticket IGNITE-4018 is ready 
> (https://apacheignite.readme.io/docs/distributed-dml).



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)


[jira] [Comment Edited] (IGNITE-4045) .NET: Support DML API

2016-12-26 Thread Pavel Tupitsyn (JIRA)

[ 
https://issues.apache.org/jira/browse/IGNITE-4045?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=15778622#comment-15778622
 ] 

Pavel Tupitsyn edited comment on IGNITE-4045 at 12/26/16 5:30 PM:
--

3) There is already a ticket: IGNITE-4397. In current ticket FieldComparer is 
hidden from public API, please ignore it.
4) I agree. This is done intentionally because we are on a very hot path here 
and want to avoid any allocations or overhead associated with {{ReadByte}} and 
{{ReadByteArray}}. I've refactored this to a generic {{IBinaryStream.Apply}} 
method which allows operating on byte pointer directly without allocations.
5) IGNITE-4495


was (Author: ptupitsyn):
3) There is already a ticket: IGNITE-4397. In current ticket FieldComparer is 
hidden from public API, please ignore it.
5) IGNITE-4495

> .NET: Support DML API
> -
>
> Key: IGNITE-4045
> URL: https://issues.apache.org/jira/browse/IGNITE-4045
> Project: Ignite
>  Issue Type: New Feature
>  Components: platforms
>Reporter: Denis Magda
>Assignee: Pavel Tupitsyn
>  Labels: roadmap
> Fix For: 2.0
>
>
> Ignite's Java component will provide support for DML soon (IGNITE-2294). At 
> she same time DML will be supported at the level of ODBC and JDBC drivers.
> As the next step we should include the similar functionality into Ignite.NET 
> by doing the following:
> - Implement DML API;
> - Enhance {{QueryExample.cs}} by doing INSERTs instead of cache.puts and 
> adding UPDATE and DELETE operation examples.
> - Add documentation to Ignite.NET readme.io covering the feature. Most like 
> most of the content can be take from the general documentation when this 
> ticket IGNITE-4018 is ready 
> (https://apacheignite.readme.io/docs/distributed-dml).



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)


[jira] [Comment Edited] (IGNITE-4045) .NET: Support DML API

2016-12-07 Thread Pavel Tupitsyn (JIRA)

[ 
https://issues.apache.org/jira/browse/IGNITE-4045?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=15728746#comment-15728746
 ] 

Pavel Tupitsyn edited comment on IGNITE-4045 at 12/7/16 1:28 PM:
-

FieldIdentityResolver issue uncovered:
Hash codes for many basic types (strings, for example) are computed differently 
in .NET and Java. 

What should we do?
* Implement hash code algorithms the same way as in Java for all basic types
* Change Java FieldIdentityResolver to compute field hash codes in serialized 
form (which is also a lot faster for all platforms)
* Remove FieldIdentityResolver support in .NET

For first iteration I suggest to support only ArrayIdentityResolver


was (Author: ptupitsyn):
FieldIdentityResolver issue uncovered:
Hash codes for many basic types (strings, for example) are computed differently 
in .NET and Java. 

What should we do?
* Implement hash code algorithms the same way as in Java for all basic types
* Remove FieldIdentityResolver support in .NET

> .NET: Support DML API
> -
>
> Key: IGNITE-4045
> URL: https://issues.apache.org/jira/browse/IGNITE-4045
> Project: Ignite
>  Issue Type: Task
>  Components: platforms
>Reporter: Denis Magda
>Assignee: Pavel Tupitsyn
>  Labels: roadmap
> Fix For: 2.0
>
>
> Ignite's Java component will provide support for DML soon (IGNITE-2294). At 
> she same time DML will be supported at the level of ODBC and JDBC drivers.
> As the next step we should include the similar functionality into Ignite.NET 
> by doing the following:
> - Implement DML API;
> - Enhance {{QueryExample.cs}} by doing INSERTs instead of cache.puts and 
> adding UPDATE and DELETE operation examples.
> - Add documentation to Ignite.NET readme.io covering the feature. Most like 
> most of the content can be take from the general documentation when this 
> ticket IGNITE-4018 is ready 
> (https://apacheignite.readme.io/docs/distributed-dml).



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)


[jira] [Comment Edited] (IGNITE-4045) .NET: Support DML API

2016-12-01 Thread Pavel Tupitsyn (JIRA)

[ 
https://issues.apache.org/jira/browse/IGNITE-4045?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=15711741#comment-15711741
 ] 

Pavel Tupitsyn edited comment on IGNITE-4045 at 12/1/16 12:24 PM:
--

Another thing to be ported to .NET is BinaryIdentityResolver interface 
(BinaryTypeConfiguration.BinaryIdentityResolver).

For now we should provide mapping to two default implementations: 
BinaryArrayIdentityResolver, BinaryFieldIdentityResolver


was (Author: ptupitsyn):
Another thing to be ported to .NET is BinaryIdentityResolver interface 
(BinaryTypeConfiguration.BinaryIdentityResolver).

> .NET: Support DML API
> -
>
> Key: IGNITE-4045
> URL: https://issues.apache.org/jira/browse/IGNITE-4045
> Project: Ignite
>  Issue Type: Task
>  Components: platforms
>Reporter: Denis Magda
>Assignee: Pavel Tupitsyn
>  Labels: roadmap
> Fix For: 2.0
>
>
> Ignite's Java component will provide support for DML soon (IGNITE-2294). At 
> she same time DML will be supported at the level of ODBC and JDBC drivers.
> As the next step we should include the similar functionality into Ignite.NET 
> by doing the following:
> - Implement DML API;
> - Enhance {{QueryExample.cs}} by doing INSERTs instead of cache.puts and 
> adding UPDATE and DELETE operation examples.
> - Add documentation to Ignite.NET readme.io covering the feature. Most like 
> most of the content can be take from the general documentation when this 
> ticket IGNITE-4018 is ready 
> (https://apacheignite.readme.io/docs/distributed-dml).



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)


[jira] [Comment Edited] (IGNITE-4045) .NET: Support DML API

2016-12-01 Thread Pavel Tupitsyn (JIRA)

[ 
https://issues.apache.org/jira/browse/IGNITE-4045?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=15711741#comment-15711741
 ] 

Pavel Tupitsyn edited comment on IGNITE-4045 at 12/1/16 11:42 AM:
--

Another thing to be ported to .NET is BinaryIdentityResolver interface 
(BinaryTypeConfiguration.BinaryIdentityResolver).


was (Author: ptupitsyn):
Another thing to be ported to .NET is BinaryIdentityResolver interface.

> .NET: Support DML API
> -
>
> Key: IGNITE-4045
> URL: https://issues.apache.org/jira/browse/IGNITE-4045
> Project: Ignite
>  Issue Type: Task
>  Components: platforms
>Reporter: Denis Magda
>Assignee: Pavel Tupitsyn
>  Labels: roadmap
> Fix For: 2.0
>
>
> Ignite's Java component will provide support for DML soon (IGNITE-2294). At 
> she same time DML will be supported at the level of ODBC and JDBC drivers.
> As the next step we should include the similar functionality into Ignite.NET 
> by doing the following:
> - Implement DML API;
> - Enhance {{QueryExample.cs}} by doing INSERTs instead of cache.puts and 
> adding UPDATE and DELETE operation examples.
> - Add documentation to Ignite.NET readme.io covering the feature. Most like 
> most of the content can be take from the general documentation when this 
> ticket IGNITE-4018 is ready 
> (https://apacheignite.readme.io/docs/distributed-dml).



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)


[jira] [Comment Edited] (IGNITE-4045) .NET: Support DML API

2016-11-30 Thread Pavel Tupitsyn (JIRA)

[ 
https://issues.apache.org/jira/browse/IGNITE-4045?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=15708670#comment-15708670
 ] 

Pavel Tupitsyn edited comment on IGNITE-4045 at 11/30/16 2:21 PM:
--

* The only API change is QueryEntity.keyFields. Everything else goes through 
SqlFieldsQuery.
* See CacheQueryDmlExample


was (Author: ptupitsyn):
The only API change is QueryEntity.keyFields. Everything else goes through 
SqlFieldsQuery.

> .NET: Support DML API
> -
>
> Key: IGNITE-4045
> URL: https://issues.apache.org/jira/browse/IGNITE-4045
> Project: Ignite
>  Issue Type: Task
>  Components: platforms
>Reporter: Denis Magda
>Assignee: Pavel Tupitsyn
>  Labels: roadmap
> Fix For: 2.0
>
>
> Ignite's Java component will provide support for DML soon (IGNITE-2294). At 
> she same time DML will be supported at the level of ODBC and JDBC drivers.
> As the next step we should include the similar functionality into Ignite.NET 
> by doing the following:
> - Implement DML API;
> - Enhance {{QueryExample.cs}} by doing INSERTs instead of cache.puts and 
> adding UPDATE and DELETE operation examples.
> - Add documentation to Ignite.NET readme.io covering the feature. Most like 
> most of the content can be take from the general documentation when this 
> ticket IGNITE-4018 is ready 
> (https://apacheignite.readme.io/docs/distributed-dml).



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)