You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@avro.apache.org by GitBox <gi...@apache.org> on 2022/06/10 03:17:20 UTC

[GitHub] [avro] KhrystynaPopadyuk opened a new pull request, #1718: avro-3434 support logical schemas in reflect reader and writer

KhrystynaPopadyuk opened a new pull request, #1718:
URL: https://github.com/apache/avro/pull/1718

   ### Jira
   My PR addresses the following [Avro Jira](https://issues.apache.org/jira/browse/AVRO-3434) issues 
   
   ### Tests
   - WriteAndReadObjectsWithLogicalSchemaFields_WithNullValues
   - WriteAndReadObjectsWithLogicalSchemaFields_WithoutNullValues
   


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: dev-unsubscribe@avro.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


[GitHub] [avro] KhrystynaPopadyuk commented on pull request #1718: AVRO-3434: support logical schemas in reflect reader and writer

Posted by GitBox <gi...@apache.org>.
KhrystynaPopadyuk commented on PR #1718:
URL: https://github.com/apache/avro/pull/1718#issuecomment-1204726230

   Hi @KalleOlaviNiemitalo , Is this PR ready to merge now?


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: issues-unsubscribe@avro.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


[GitHub] [avro] RyanSkraba commented on pull request #1718: AVRO-3434: support logical schemas in reflect reader and writer

Posted by GitBox <gi...@apache.org>.
RyanSkraba commented on PR #1718:
URL: https://github.com/apache/avro/pull/1718#issuecomment-1209029889

   Oh my, yes thanks!  I'm sorry this didn't make this into the 1.11.1 release, I think I had it confused with another PR that was targeted for 1.12.0...  if we end up doing a 1.11.2 release, would this be a candidate?  We typically release every 6 months or so, and the major release happens in the last quarter.


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: issues-unsubscribe@avro.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


[GitHub] [avro] KalleOlaviNiemitalo commented on pull request #1718: AVRO-3434: support logical schemas in reflect reader and writer

Posted by GitBox <gi...@apache.org>.
KalleOlaviNiemitalo commented on PR #1718:
URL: https://github.com/apache/avro/pull/1718#issuecomment-1204743854

   I'm not a committer here. Perhaps @RyanSkraba can merge this PR. I don't know what the release plans are for Avro 1.11.2 and 1.12.0.


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: issues-unsubscribe@avro.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


[GitHub] [avro] martin-g commented on pull request #1718: AVRO-3434: support logical schemas in reflect reader and writer

Posted by GitBox <gi...@apache.org>.
martin-g commented on PR #1718:
URL: https://github.com/apache/avro/pull/1718#issuecomment-1291598050

   There are no planned dates yet.


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: issues-unsubscribe@avro.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


[GitHub] [avro] KhrystynaPopadyuk commented on pull request #1718: AVRO-3434: support logical schemas in reflect reader and writer

Posted by GitBox <gi...@apache.org>.
KhrystynaPopadyuk commented on PR #1718:
URL: https://github.com/apache/avro/pull/1718#issuecomment-1293048941

   Hi @martin-g ,
   
   Thank you for quick response. 
   This changes is critical for my company now. Is it possible to get patch before Christmas?


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: issues-unsubscribe@avro.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


[GitHub] [avro] KhrystynaPopadyuk commented on pull request #1718: AVRO-3434: support logical schemas in reflect reader and writer

Posted by GitBox <gi...@apache.org>.
KhrystynaPopadyuk commented on PR #1718:
URL: https://github.com/apache/avro/pull/1718#issuecomment-1331711328

   H @KalleOlaviNiemitalo Could you please review this PR.


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: issues-unsubscribe@avro.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


[GitHub] [avro] KalleOlaviNiemitalo commented on a diff in pull request #1718: AVRO-3434: support logical schemas in reflect reader and writer

Posted by GitBox <gi...@apache.org>.
KalleOlaviNiemitalo commented on code in PR #1718:
URL: https://github.com/apache/avro/pull/1718#discussion_r910133929


##########
lang/csharp/src/apache/test/Reflect/TestLogicalSchema.cs:
##########
@@ -0,0 +1,177 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     https://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+using System;
+using System.IO;
+using Avro.IO;
+using Avro.Reflect;
+using NUnit.Framework;
+
+namespace Avro.test.Reflect
+{
+    public class TestLogicalSchema
+    {
+        [TestCase]
+        public void WriteAndReadObjectsWithLogicalSchemaFields_WithNullValues()
+        {
+            //Arrange
+            var obj = new TestObject
+            {
+                AvroDecimalNullableProperty = null,
+                AvroDecimalProperty = 13.42m,
+                GuidNullableProperty = null,
+                GuidProperty = Guid.NewGuid(),
+                DateNullableProperty = null,
+                DateProperty = new DateTime(2022, 05, 26, 14, 57, 24, 123),
+                DateTimeMicrosecondNullableProperty = null,
+                DateTimeMicrosecondProperty = DateTime.UtcNow,
+                DateTimeMillisecondNullableProperty = null,
+                DateTimeMillisecondProperty = DateTime.UtcNow,
+                TimeSpanMicrosecondNullableProperty = null,
+                TimeSpanMicrosecondProperty = new TimeSpan(23, 59, 59),
+                TimeSpanMillisecondNullableProperty = null,
+                TimeSpanMillisecondProperty = new TimeSpan(23, 59, 59),
+            };
+
+            var schema = Schema.Parse(SchemaJson);
+            var writer = new ReflectWriter<TestObject>(schema);
+            var reader = new ReflectReader<TestObject>(schema, schema);
+            var writeStream = new MemoryStream();
+            var writeBinaryEncoder = new BinaryEncoder(writeStream);
+
+            //Act
+            writer.Write(obj, writeBinaryEncoder);
+            var data = writeStream.ToArray();
+
+            var readStream = new MemoryStream(data);
+            var result = reader.Read(null, new BinaryDecoder(readStream));
+
+            //Assert
+            Assert.NotNull(result);
+            Assert.AreEqual(obj.AvroDecimalNullableProperty, result.AvroDecimalNullableProperty);
+            Assert.AreEqual(obj.AvroDecimalProperty, result.AvroDecimalProperty);
+            Assert.AreEqual(obj.GuidNullableProperty, result.GuidNullableProperty);
+            Assert.AreEqual(obj.GuidProperty, result.GuidProperty);
+            Assert.IsNull(obj.DateNullableProperty);
+            Assert.AreEqual(obj.DateProperty.Date, result.DateProperty);
+            Assert.AreEqual(obj.DateTimeMicrosecondNullableProperty, obj.DateTimeMicrosecondNullableProperty);
+            Assert.AreEqual(obj.DateTimeMicrosecondProperty, obj.DateTimeMicrosecondProperty);
+            Assert.IsNull(result.DateTimeMillisecondNullableProperty);
+            Assert.AreEqual((obj.DateTimeMillisecondProperty.Ticks / 10000) * 10000, result.DateTimeMillisecondProperty.Ticks);
+            Assert.AreEqual(obj.TimeSpanMicrosecondNullableProperty, result.TimeSpanMicrosecondNullableProperty);
+            Assert.AreEqual(obj.TimeSpanMicrosecondProperty, result.TimeSpanMicrosecondProperty);
+            Assert.AreEqual(obj.TimeSpanMillisecondNullableProperty, result.TimeSpanMillisecondNullableProperty);
+            Assert.AreEqual(obj.TimeSpanMillisecondProperty, result.TimeSpanMillisecondProperty);
+        }
+
+        [TestCase]
+        public void WriteAndReadObjectsWithLogicalSchemaFields_WithoutNullValues()
+        {
+            //Arrange
+            var obj = new TestObject
+            {
+                AvroDecimalNullableProperty = 136.42m,
+                AvroDecimalProperty = 13.42m,
+                GuidNullableProperty = Guid.NewGuid(),
+                GuidProperty = Guid.NewGuid(),
+                DateNullableProperty = new DateTime(2022, 05, 26, 14, 57, 24, 123),
+                DateProperty = new DateTime(2022, 05, 26, 14, 57, 24, 123),
+                DateTimeMicrosecondNullableProperty = DateTime.UtcNow,
+                DateTimeMicrosecondProperty = DateTime.UtcNow,
+                DateTimeMillisecondNullableProperty = DateTime.UtcNow,
+                DateTimeMillisecondProperty = DateTime.UtcNow,
+                TimeSpanMicrosecondNullableProperty = new TimeSpan(23, 59, 59),
+                TimeSpanMicrosecondProperty = new TimeSpan(23, 59, 59),
+                TimeSpanMillisecondNullableProperty = new TimeSpan(23, 59, 59),
+                TimeSpanMillisecondProperty = new TimeSpan(23, 59, 59),
+            };
+
+            var schema = Schema.Parse(SchemaJson);
+            var writer = new ReflectWriter<TestObject>(schema);
+            var reader = new ReflectReader<TestObject>(schema, schema);
+            var writeStream = new MemoryStream();
+            var writeBinaryEncoder = new BinaryEncoder(writeStream);
+
+            //Act
+            writer.Write(obj, writeBinaryEncoder);
+            var data = writeStream.ToArray();
+
+            var readStream = new MemoryStream(data);
+            var result = reader.Read(null, new BinaryDecoder(readStream));
+
+            //Assert
+            Assert.NotNull(result);
+            Assert.AreEqual(obj.AvroDecimalNullableProperty, result.AvroDecimalNullableProperty);
+            Assert.AreEqual(obj.AvroDecimalProperty, result.AvroDecimalProperty);
+            Assert.AreEqual(obj.GuidNullableProperty, result.GuidNullableProperty);
+            Assert.AreEqual(obj.GuidProperty, result.GuidProperty);
+            Assert.AreEqual(obj.DateNullableProperty?.Date, result.DateProperty);
+            Assert.AreEqual(obj.DateProperty.Date, result.DateProperty);
+            Assert.AreEqual(obj.DateTimeMicrosecondNullableProperty, obj.DateTimeMicrosecondNullableProperty);
+            Assert.AreEqual(obj.DateTimeMicrosecondProperty, obj.DateTimeMicrosecondProperty);

Review Comment:
   Referring to <https://github.com/apache/avro/pull/1718#discussion_r910120155>



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: issues-unsubscribe@avro.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


[GitHub] [avro] KhrystynaPopadyuk commented on pull request #1718: AVRO-3434: support logical schemas in reflect reader and writer

Posted by GitBox <gi...@apache.org>.
KhrystynaPopadyuk commented on PR #1718:
URL: https://github.com/apache/avro/pull/1718#issuecomment-1347651880

   Hi @martin-g ,
   
   Thank you for explanation. 
   Is there any work/discussion to decouple languages to remove dependency and prevent such blocks in future?
   Also, is there work/discussion to use CI/CD approach to streamline releases (automatically release package on merge to main, for example)?
   
   As short term solution, is it possible to released 1.11.2 without that Java PR and have 1.11.3 for it later?


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: issues-unsubscribe@avro.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


[GitHub] [avro] khrystynapopadyukwexinccom commented on pull request #1718: AVRO-3434: support logical schemas in reflect reader and writer

Posted by GitBox <gi...@apache.org>.
khrystynapopadyukwexinccom commented on PR #1718:
URL: https://github.com/apache/avro/pull/1718#issuecomment-1169494976

   Hi @RyanSkraba,
   Do you know how I can request review for this PR? Who is authorised to approve PRs and merge them?


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: issues-unsubscribe@avro.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


[GitHub] [avro] KalleOlaviNiemitalo commented on a diff in pull request #1718: AVRO-3434: support logical schemas in reflect reader and writer

Posted by GitBox <gi...@apache.org>.
KalleOlaviNiemitalo commented on code in PR #1718:
URL: https://github.com/apache/avro/pull/1718#discussion_r910100336


##########
lang/csharp/src/apache/main/Reflect/ReflectDefaultWriter.cs:
##########
@@ -199,6 +199,8 @@ protected override bool Matches(Schema sc, object obj)
                     return false;   // Union directly within another union not allowed!
                 case Schema.Type.Fixed:
                     return obj is byte[];
+                case Schema.Type.Logical:
+                    return ((LogicalSchema)sc).LogicalType.IsInstanceOfLogicalType(obj);

Review Comment:
   OK, `((LogicalSchema)sc).LogicalType` cannot be null here, because the LogicalSchema constructor assigns `LogicalType = LogicalTypeFactory.Instance.GetFromLogicalSchema(this)` without `ignoreInvalidOrUnknown: true`.
   
   Before this PR, ReflectDefaultWriter.Matches always returned false for LogicalSchema, causing SpecificWriter.WriteUnion not to choose that schema. Is there any `obj` for which SpecificWriter could have succeeeded before, but for which it now starts choosing the logical schema? I think not, because IsInstanceOfLogicalType can only return true for AvroDecimal, Guid, DateTime, or TimeSpan, and none of those types matches any other Schema.Type in this `switch`. OK.



##########
lang/csharp/src/apache/test/Reflect/TestLogicalSchema.cs:
##########
@@ -0,0 +1,177 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     https://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+using System;
+using System.IO;
+using Avro.IO;
+using Avro.Reflect;
+using NUnit.Framework;
+
+namespace Avro.test.Reflect
+{
+    public class TestLogicalSchema
+    {
+        [TestCase]
+        public void WriteAndReadObjectsWithLogicalSchemaFields_WithNullValues()
+        {
+            //Arrange
+            var obj = new TestObject
+            {
+                AvroDecimalNullableProperty = null,
+                AvroDecimalProperty = 13.42m,
+                GuidNullableProperty = null,
+                GuidProperty = Guid.NewGuid(),
+                DateNullableProperty = null,
+                DateProperty = new DateTime(2022, 05, 26, 14, 57, 24, 123),
+                DateTimeMicrosecondNullableProperty = null,
+                DateTimeMicrosecondProperty = DateTime.UtcNow,
+                DateTimeMillisecondNullableProperty = null,
+                DateTimeMillisecondProperty = DateTime.UtcNow,
+                TimeSpanMicrosecondNullableProperty = null,
+                TimeSpanMicrosecondProperty = new TimeSpan(23, 59, 59),
+                TimeSpanMillisecondNullableProperty = null,
+                TimeSpanMillisecondProperty = new TimeSpan(23, 59, 59),
+            };
+
+            var schema = Schema.Parse(SchemaJson);
+            var writer = new ReflectWriter<TestObject>(schema);
+            var reader = new ReflectReader<TestObject>(schema, schema);
+            var writeStream = new MemoryStream();
+            var writeBinaryEncoder = new BinaryEncoder(writeStream);
+
+            //Act
+            writer.Write(obj, writeBinaryEncoder);
+            var data = writeStream.ToArray();
+
+            var readStream = new MemoryStream(data);
+            var result = reader.Read(null, new BinaryDecoder(readStream));
+
+            //Assert
+            Assert.NotNull(result);
+            Assert.AreEqual(obj.AvroDecimalNullableProperty, result.AvroDecimalNullableProperty);
+            Assert.AreEqual(obj.AvroDecimalProperty, result.AvroDecimalProperty);
+            Assert.AreEqual(obj.GuidNullableProperty, result.GuidNullableProperty);
+            Assert.AreEqual(obj.GuidProperty, result.GuidProperty);
+            Assert.IsNull(obj.DateNullableProperty);
+            Assert.AreEqual(obj.DateProperty.Date, result.DateProperty);
+            Assert.AreEqual(obj.DateTimeMicrosecondNullableProperty, obj.DateTimeMicrosecondNullableProperty);
+            Assert.AreEqual(obj.DateTimeMicrosecondProperty, obj.DateTimeMicrosecondProperty);

Review Comment:
   These should truncate to microseconds (one tick of DateTime is 100 nanoseconds = 0.1 microseconds). The test passes because it compares to properties of the same object (`obj.` in both arguments, but one should be `result.`).



##########
lang/csharp/src/apache/test/Reflect/TestLogicalSchema.cs:
##########
@@ -0,0 +1,177 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     https://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+using System;
+using System.IO;
+using Avro.IO;
+using Avro.Reflect;
+using NUnit.Framework;
+
+namespace Avro.test.Reflect
+{
+    public class TestLogicalSchema
+    {
+        [TestCase]
+        public void WriteAndReadObjectsWithLogicalSchemaFields_WithNullValues()
+        {
+            //Arrange
+            var obj = new TestObject
+            {
+                AvroDecimalNullableProperty = null,
+                AvroDecimalProperty = 13.42m,
+                GuidNullableProperty = null,
+                GuidProperty = Guid.NewGuid(),
+                DateNullableProperty = null,
+                DateProperty = new DateTime(2022, 05, 26, 14, 57, 24, 123),
+                DateTimeMicrosecondNullableProperty = null,
+                DateTimeMicrosecondProperty = DateTime.UtcNow,
+                DateTimeMillisecondNullableProperty = null,
+                DateTimeMillisecondProperty = DateTime.UtcNow,
+                TimeSpanMicrosecondNullableProperty = null,
+                TimeSpanMicrosecondProperty = new TimeSpan(23, 59, 59),
+                TimeSpanMillisecondNullableProperty = null,
+                TimeSpanMillisecondProperty = new TimeSpan(23, 59, 59),
+            };
+
+            var schema = Schema.Parse(SchemaJson);
+            var writer = new ReflectWriter<TestObject>(schema);
+            var reader = new ReflectReader<TestObject>(schema, schema);
+            var writeStream = new MemoryStream();
+            var writeBinaryEncoder = new BinaryEncoder(writeStream);
+
+            //Act
+            writer.Write(obj, writeBinaryEncoder);
+            var data = writeStream.ToArray();
+
+            var readStream = new MemoryStream(data);
+            var result = reader.Read(null, new BinaryDecoder(readStream));
+
+            //Assert
+            Assert.NotNull(result);
+            Assert.AreEqual(obj.AvroDecimalNullableProperty, result.AvroDecimalNullableProperty);
+            Assert.AreEqual(obj.AvroDecimalProperty, result.AvroDecimalProperty);
+            Assert.AreEqual(obj.GuidNullableProperty, result.GuidNullableProperty);
+            Assert.AreEqual(obj.GuidProperty, result.GuidProperty);
+            Assert.IsNull(obj.DateNullableProperty);
+            Assert.AreEqual(obj.DateProperty.Date, result.DateProperty);
+            Assert.AreEqual(obj.DateTimeMicrosecondNullableProperty, obj.DateTimeMicrosecondNullableProperty);
+            Assert.AreEqual(obj.DateTimeMicrosecondProperty, obj.DateTimeMicrosecondProperty);
+            Assert.IsNull(result.DateTimeMillisecondNullableProperty);
+            Assert.AreEqual((obj.DateTimeMillisecondProperty.Ticks / 10000) * 10000, result.DateTimeMillisecondProperty.Ticks);
+            Assert.AreEqual(obj.TimeSpanMicrosecondNullableProperty, result.TimeSpanMicrosecondNullableProperty);
+            Assert.AreEqual(obj.TimeSpanMicrosecondProperty, result.TimeSpanMicrosecondProperty);
+            Assert.AreEqual(obj.TimeSpanMillisecondNullableProperty, result.TimeSpanMillisecondNullableProperty);
+            Assert.AreEqual(obj.TimeSpanMillisecondProperty, result.TimeSpanMillisecondProperty);

Review Comment:
   OK, these don't need to truncate, because the values are constant.



##########
lang/csharp/src/apache/test/Reflect/TestLogicalSchema.cs:
##########
@@ -0,0 +1,177 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     https://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+using System;
+using System.IO;
+using Avro.IO;
+using Avro.Reflect;
+using NUnit.Framework;
+
+namespace Avro.test.Reflect
+{
+    public class TestLogicalSchema
+    {
+        [TestCase]
+        public void WriteAndReadObjectsWithLogicalSchemaFields_WithNullValues()
+        {
+            //Arrange
+            var obj = new TestObject
+            {
+                AvroDecimalNullableProperty = null,
+                AvroDecimalProperty = 13.42m,
+                GuidNullableProperty = null,
+                GuidProperty = Guid.NewGuid(),
+                DateNullableProperty = null,
+                DateProperty = new DateTime(2022, 05, 26, 14, 57, 24, 123),
+                DateTimeMicrosecondNullableProperty = null,
+                DateTimeMicrosecondProperty = DateTime.UtcNow,
+                DateTimeMillisecondNullableProperty = null,
+                DateTimeMillisecondProperty = DateTime.UtcNow,
+                TimeSpanMicrosecondNullableProperty = null,
+                TimeSpanMicrosecondProperty = new TimeSpan(23, 59, 59),
+                TimeSpanMillisecondNullableProperty = null,
+                TimeSpanMillisecondProperty = new TimeSpan(23, 59, 59),
+            };
+
+            var schema = Schema.Parse(SchemaJson);
+            var writer = new ReflectWriter<TestObject>(schema);
+            var reader = new ReflectReader<TestObject>(schema, schema);
+            var writeStream = new MemoryStream();
+            var writeBinaryEncoder = new BinaryEncoder(writeStream);
+
+            //Act
+            writer.Write(obj, writeBinaryEncoder);
+            var data = writeStream.ToArray();
+
+            var readStream = new MemoryStream(data);
+            var result = reader.Read(null, new BinaryDecoder(readStream));
+
+            //Assert
+            Assert.NotNull(result);
+            Assert.AreEqual(obj.AvroDecimalNullableProperty, result.AvroDecimalNullableProperty);
+            Assert.AreEqual(obj.AvroDecimalProperty, result.AvroDecimalProperty);
+            Assert.AreEqual(obj.GuidNullableProperty, result.GuidNullableProperty);
+            Assert.AreEqual(obj.GuidProperty, result.GuidProperty);
+            Assert.IsNull(obj.DateNullableProperty);
+            Assert.AreEqual(obj.DateProperty.Date, result.DateProperty);
+            Assert.AreEqual(obj.DateTimeMicrosecondNullableProperty, obj.DateTimeMicrosecondNullableProperty);
+            Assert.AreEqual(obj.DateTimeMicrosecondProperty, obj.DateTimeMicrosecondProperty);
+            Assert.IsNull(result.DateTimeMillisecondNullableProperty);
+            Assert.AreEqual((obj.DateTimeMillisecondProperty.Ticks / 10000) * 10000, result.DateTimeMillisecondProperty.Ticks);
+            Assert.AreEqual(obj.TimeSpanMicrosecondNullableProperty, result.TimeSpanMicrosecondNullableProperty);
+            Assert.AreEqual(obj.TimeSpanMicrosecondProperty, result.TimeSpanMicrosecondProperty);
+            Assert.AreEqual(obj.TimeSpanMillisecondNullableProperty, result.TimeSpanMillisecondNullableProperty);
+            Assert.AreEqual(obj.TimeSpanMillisecondProperty, result.TimeSpanMillisecondProperty);
+        }
+
+        [TestCase]
+        public void WriteAndReadObjectsWithLogicalSchemaFields_WithoutNullValues()
+        {
+            //Arrange
+            var obj = new TestObject
+            {
+                AvroDecimalNullableProperty = 136.42m,
+                AvroDecimalProperty = 13.42m,
+                GuidNullableProperty = Guid.NewGuid(),
+                GuidProperty = Guid.NewGuid(),
+                DateNullableProperty = new DateTime(2022, 05, 26, 14, 57, 24, 123),
+                DateProperty = new DateTime(2022, 05, 26, 14, 57, 24, 123),
+                DateTimeMicrosecondNullableProperty = DateTime.UtcNow,
+                DateTimeMicrosecondProperty = DateTime.UtcNow,
+                DateTimeMillisecondNullableProperty = DateTime.UtcNow,
+                DateTimeMillisecondProperty = DateTime.UtcNow,
+                TimeSpanMicrosecondNullableProperty = new TimeSpan(23, 59, 59),
+                TimeSpanMicrosecondProperty = new TimeSpan(23, 59, 59),
+                TimeSpanMillisecondNullableProperty = new TimeSpan(23, 59, 59),
+                TimeSpanMillisecondProperty = new TimeSpan(23, 59, 59),
+            };
+
+            var schema = Schema.Parse(SchemaJson);
+            var writer = new ReflectWriter<TestObject>(schema);
+            var reader = new ReflectReader<TestObject>(schema, schema);
+            var writeStream = new MemoryStream();
+            var writeBinaryEncoder = new BinaryEncoder(writeStream);
+
+            //Act
+            writer.Write(obj, writeBinaryEncoder);
+            var data = writeStream.ToArray();
+
+            var readStream = new MemoryStream(data);
+            var result = reader.Read(null, new BinaryDecoder(readStream));
+
+            //Assert
+            Assert.NotNull(result);
+            Assert.AreEqual(obj.AvroDecimalNullableProperty, result.AvroDecimalNullableProperty);
+            Assert.AreEqual(obj.AvroDecimalProperty, result.AvroDecimalProperty);
+            Assert.AreEqual(obj.GuidNullableProperty, result.GuidNullableProperty);
+            Assert.AreEqual(obj.GuidProperty, result.GuidProperty);
+            Assert.AreEqual(obj.DateNullableProperty?.Date, result.DateProperty);
+            Assert.AreEqual(obj.DateProperty.Date, result.DateProperty);
+            Assert.AreEqual(obj.DateTimeMicrosecondNullableProperty, obj.DateTimeMicrosecondNullableProperty);
+            Assert.AreEqual(obj.DateTimeMicrosecondProperty, obj.DateTimeMicrosecondProperty);

Review Comment:
   The same bugs as in WriteAndReadObjectsWithLogicalSchemaFields_WithNullValues.



##########
lang/csharp/src/apache/test/Reflect/TestLogicalSchema.cs:
##########
@@ -0,0 +1,177 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     https://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+using System;
+using System.IO;
+using Avro.IO;
+using Avro.Reflect;
+using NUnit.Framework;
+
+namespace Avro.test.Reflect
+{
+    public class TestLogicalSchema
+    {
+        [TestCase]
+        public void WriteAndReadObjectsWithLogicalSchemaFields_WithNullValues()
+        {
+            //Arrange
+            var obj = new TestObject
+            {
+                AvroDecimalNullableProperty = null,
+                AvroDecimalProperty = 13.42m,
+                GuidNullableProperty = null,
+                GuidProperty = Guid.NewGuid(),
+                DateNullableProperty = null,
+                DateProperty = new DateTime(2022, 05, 26, 14, 57, 24, 123),
+                DateTimeMicrosecondNullableProperty = null,
+                DateTimeMicrosecondProperty = DateTime.UtcNow,
+                DateTimeMillisecondNullableProperty = null,
+                DateTimeMillisecondProperty = DateTime.UtcNow,
+                TimeSpanMicrosecondNullableProperty = null,
+                TimeSpanMicrosecondProperty = new TimeSpan(23, 59, 59),
+                TimeSpanMillisecondNullableProperty = null,
+                TimeSpanMillisecondProperty = new TimeSpan(23, 59, 59),
+            };
+
+            var schema = Schema.Parse(SchemaJson);
+            var writer = new ReflectWriter<TestObject>(schema);
+            var reader = new ReflectReader<TestObject>(schema, schema);
+            var writeStream = new MemoryStream();
+            var writeBinaryEncoder = new BinaryEncoder(writeStream);
+
+            //Act
+            writer.Write(obj, writeBinaryEncoder);
+            var data = writeStream.ToArray();
+
+            var readStream = new MemoryStream(data);
+            var result = reader.Read(null, new BinaryDecoder(readStream));
+
+            //Assert
+            Assert.NotNull(result);
+            Assert.AreEqual(obj.AvroDecimalNullableProperty, result.AvroDecimalNullableProperty);
+            Assert.AreEqual(obj.AvroDecimalProperty, result.AvroDecimalProperty);
+            Assert.AreEqual(obj.GuidNullableProperty, result.GuidNullableProperty);
+            Assert.AreEqual(obj.GuidProperty, result.GuidProperty);
+            Assert.IsNull(obj.DateNullableProperty);
+            Assert.AreEqual(obj.DateProperty.Date, result.DateProperty);
+            Assert.AreEqual(obj.DateTimeMicrosecondNullableProperty, obj.DateTimeMicrosecondNullableProperty);
+            Assert.AreEqual(obj.DateTimeMicrosecondProperty, obj.DateTimeMicrosecondProperty);
+            Assert.IsNull(result.DateTimeMillisecondNullableProperty);
+            Assert.AreEqual((obj.DateTimeMillisecondProperty.Ticks / 10000) * 10000, result.DateTimeMillisecondProperty.Ticks);
+            Assert.AreEqual(obj.TimeSpanMicrosecondNullableProperty, result.TimeSpanMicrosecondNullableProperty);
+            Assert.AreEqual(obj.TimeSpanMicrosecondProperty, result.TimeSpanMicrosecondProperty);
+            Assert.AreEqual(obj.TimeSpanMillisecondNullableProperty, result.TimeSpanMillisecondNullableProperty);
+            Assert.AreEqual(obj.TimeSpanMillisecondProperty, result.TimeSpanMillisecondProperty);
+        }
+
+        [TestCase]
+        public void WriteAndReadObjectsWithLogicalSchemaFields_WithoutNullValues()
+        {
+            //Arrange
+            var obj = new TestObject
+            {
+                AvroDecimalNullableProperty = 136.42m,
+                AvroDecimalProperty = 13.42m,
+                GuidNullableProperty = Guid.NewGuid(),
+                GuidProperty = Guid.NewGuid(),
+                DateNullableProperty = new DateTime(2022, 05, 26, 14, 57, 24, 123),
+                DateProperty = new DateTime(2022, 05, 26, 14, 57, 24, 123),
+                DateTimeMicrosecondNullableProperty = DateTime.UtcNow,
+                DateTimeMicrosecondProperty = DateTime.UtcNow,
+                DateTimeMillisecondNullableProperty = DateTime.UtcNow,
+                DateTimeMillisecondProperty = DateTime.UtcNow,
+                TimeSpanMicrosecondNullableProperty = new TimeSpan(23, 59, 59),
+                TimeSpanMicrosecondProperty = new TimeSpan(23, 59, 59),
+                TimeSpanMillisecondNullableProperty = new TimeSpan(23, 59, 59),
+                TimeSpanMillisecondProperty = new TimeSpan(23, 59, 59),
+            };
+
+            var schema = Schema.Parse(SchemaJson);
+            var writer = new ReflectWriter<TestObject>(schema);
+            var reader = new ReflectReader<TestObject>(schema, schema);
+            var writeStream = new MemoryStream();
+            var writeBinaryEncoder = new BinaryEncoder(writeStream);
+
+            //Act
+            writer.Write(obj, writeBinaryEncoder);
+            var data = writeStream.ToArray();
+
+            var readStream = new MemoryStream(data);
+            var result = reader.Read(null, new BinaryDecoder(readStream));
+
+            //Assert
+            Assert.NotNull(result);
+            Assert.AreEqual(obj.AvroDecimalNullableProperty, result.AvroDecimalNullableProperty);
+            Assert.AreEqual(obj.AvroDecimalProperty, result.AvroDecimalProperty);
+            Assert.AreEqual(obj.GuidNullableProperty, result.GuidNullableProperty);
+            Assert.AreEqual(obj.GuidProperty, result.GuidProperty);
+            Assert.AreEqual(obj.DateNullableProperty?.Date, result.DateProperty);
+            Assert.AreEqual(obj.DateProperty.Date, result.DateProperty);
+            Assert.AreEqual(obj.DateTimeMicrosecondNullableProperty, obj.DateTimeMicrosecondNullableProperty);
+            Assert.AreEqual(obj.DateTimeMicrosecondProperty, obj.DateTimeMicrosecondProperty);
+            Assert.AreEqual((obj.TimeSpanMicrosecondNullableProperty?.Ticks / 10000) * 10000, result.TimeSpanMicrosecondNullableProperty?.Ticks);

Review Comment:
   Should compare DateTimeMillisecondNullableProperty rather than TimeSpanMicrosecondNullableProperty, which is compared again below.



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: issues-unsubscribe@avro.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


[GitHub] [avro] KhrystynaPopadyuk commented on a diff in pull request #1718: AVRO-3434: support logical schemas in reflect reader and writer

Posted by GitBox <gi...@apache.org>.
KhrystynaPopadyuk commented on code in PR #1718:
URL: https://github.com/apache/avro/pull/1718#discussion_r913309136


##########
lang/csharp/src/apache/test/Reflect/TestLogicalSchema.cs:
##########
@@ -0,0 +1,177 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     https://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+using System;
+using System.IO;
+using Avro.IO;
+using Avro.Reflect;
+using NUnit.Framework;
+
+namespace Avro.test.Reflect
+{
+    public class TestLogicalSchema
+    {
+        [TestCase]
+        public void WriteAndReadObjectsWithLogicalSchemaFields_WithNullValues()
+        {
+            //Arrange
+            var obj = new TestObject
+            {
+                AvroDecimalNullableProperty = null,
+                AvroDecimalProperty = 13.42m,
+                GuidNullableProperty = null,
+                GuidProperty = Guid.NewGuid(),
+                DateNullableProperty = null,
+                DateProperty = new DateTime(2022, 05, 26, 14, 57, 24, 123),
+                DateTimeMicrosecondNullableProperty = null,
+                DateTimeMicrosecondProperty = DateTime.UtcNow,
+                DateTimeMillisecondNullableProperty = null,
+                DateTimeMillisecondProperty = DateTime.UtcNow,
+                TimeSpanMicrosecondNullableProperty = null,
+                TimeSpanMicrosecondProperty = new TimeSpan(23, 59, 59),
+                TimeSpanMillisecondNullableProperty = null,
+                TimeSpanMillisecondProperty = new TimeSpan(23, 59, 59),
+            };
+
+            var schema = Schema.Parse(SchemaJson);
+            var writer = new ReflectWriter<TestObject>(schema);
+            var reader = new ReflectReader<TestObject>(schema, schema);
+            var writeStream = new MemoryStream();
+            var writeBinaryEncoder = new BinaryEncoder(writeStream);
+
+            //Act
+            writer.Write(obj, writeBinaryEncoder);
+            var data = writeStream.ToArray();
+
+            var readStream = new MemoryStream(data);
+            var result = reader.Read(null, new BinaryDecoder(readStream));
+
+            //Assert
+            Assert.NotNull(result);
+            Assert.AreEqual(obj.AvroDecimalNullableProperty, result.AvroDecimalNullableProperty);
+            Assert.AreEqual(obj.AvroDecimalProperty, result.AvroDecimalProperty);
+            Assert.AreEqual(obj.GuidNullableProperty, result.GuidNullableProperty);
+            Assert.AreEqual(obj.GuidProperty, result.GuidProperty);
+            Assert.IsNull(obj.DateNullableProperty);
+            Assert.AreEqual(obj.DateProperty.Date, result.DateProperty);
+            Assert.AreEqual(obj.DateTimeMicrosecondNullableProperty, obj.DateTimeMicrosecondNullableProperty);
+            Assert.AreEqual(obj.DateTimeMicrosecondProperty, obj.DateTimeMicrosecondProperty);

Review Comment:
   Done



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: issues-unsubscribe@avro.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


[GitHub] [avro] martin-g merged pull request #1718: AVRO-3434: support logical schemas in reflect reader and writer

Posted by GitBox <gi...@apache.org>.
martin-g merged PR #1718:
URL: https://github.com/apache/avro/pull/1718


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: dev-unsubscribe@avro.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


[GitHub] [avro] KhrystynaPopadyuk commented on pull request #1718: AVRO-3434: support logical schemas in reflect reader and writer

Posted by GitBox <gi...@apache.org>.
KhrystynaPopadyuk commented on PR #1718:
URL: https://github.com/apache/avro/pull/1718#issuecomment-1174481511

   Hi @KalleOlaviNiemitalo ,
   Thank you for review. I implemented you comments and pushed changes. Also slightly rewrite asserts: add check for null.


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: issues-unsubscribe@avro.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


[GitHub] [avro] KhrystynaPopadyuk commented on pull request #1718: AVRO-3434: support logical schemas in reflect reader and writer

Posted by GitBox <gi...@apache.org>.
KhrystynaPopadyuk commented on PR #1718:
URL: https://github.com/apache/avro/pull/1718#issuecomment-1204738761

   @KalleOlaviNiemitalo  How I can request merge? And what is next step to get new nuget package version?


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: issues-unsubscribe@avro.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


[GitHub] [avro] KhrystynaPopadyuk commented on pull request #1718: AVRO-3434: support logical schemas in reflect reader and writer

Posted by GitBox <gi...@apache.org>.
KhrystynaPopadyuk commented on PR #1718:
URL: https://github.com/apache/avro/pull/1718#issuecomment-1208834816

   Hi @KalleOlaviNiemitalo , Do you know how I can request merge? Or how I can contact committers?


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: issues-unsubscribe@avro.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


[GitHub] [avro] zcsizmadia commented on pull request #1718: AVRO-3434: support logical schemas in reflect reader and writer

Posted by GitBox <gi...@apache.org>.
zcsizmadia commented on PR #1718:
URL: https://github.com/apache/avro/pull/1718#issuecomment-1348803491

   As an alternatieve, until 1.11.2 is released, you can build locally all C# nupkgs as version e.g. `1.11.2-reflect.1` and add it to a local offline nuget repository path. If needed, these nupkgs can be checked into source control as well with specifying a NuGet.config for your project. In this case the usage is very transparent.


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: issues-unsubscribe@avro.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


[GitHub] [avro] KhrystynaPopadyuk commented on pull request #1718: AVRO-3434: support logical schemas in reflect reader and writer

Posted by GitBox <gi...@apache.org>.
KhrystynaPopadyuk commented on PR #1718:
URL: https://github.com/apache/avro/pull/1718#issuecomment-1209036870

   Hi @RyanSkraba, This is not breaking changes, I think it can goes in minor release.


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: issues-unsubscribe@avro.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


[GitHub] [avro] martin-g commented on pull request #1718: AVRO-3434: support logical schemas in reflect reader and writer

Posted by GitBox <gi...@apache.org>.
martin-g commented on PR #1718:
URL: https://github.com/apache/avro/pull/1718#issuecomment-1346003765

   > Could you please explain what exactly blocks .NET nuget package release?
   
   The "problem" is that we do not release separate Avro modules/langs. We make releases which include all language packs.
   And AFAIK there are some Java PRs which need to be reviewed by Avro committer for 1.11.2.


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: issues-unsubscribe@avro.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


[GitHub] [avro] RyanSkraba commented on pull request #1718: AVRO-3434: support logical schemas in reflect reader and writer

Posted by GitBox <gi...@apache.org>.
RyanSkraba commented on PR #1718:
URL: https://github.com/apache/avro/pull/1718#issuecomment-1174008154

   Ooops -- I thought I had responded to this!  Thanks for the review @KalleOlaviNiemitalo .
   
   @KhrystynaPopadyuk If you can address the comments, we can probably get this into 1.11.1!


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: issues-unsubscribe@avro.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


[GitHub] [avro] KhrystynaPopadyuk commented on a diff in pull request #1718: AVRO-3434: support logical schemas in reflect reader and writer

Posted by GitBox <gi...@apache.org>.
KhrystynaPopadyuk commented on code in PR #1718:
URL: https://github.com/apache/avro/pull/1718#discussion_r913309195


##########
lang/csharp/src/apache/test/Reflect/TestLogicalSchema.cs:
##########
@@ -0,0 +1,177 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     https://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+using System;
+using System.IO;
+using Avro.IO;
+using Avro.Reflect;
+using NUnit.Framework;
+
+namespace Avro.test.Reflect
+{
+    public class TestLogicalSchema
+    {
+        [TestCase]
+        public void WriteAndReadObjectsWithLogicalSchemaFields_WithNullValues()
+        {
+            //Arrange
+            var obj = new TestObject
+            {
+                AvroDecimalNullableProperty = null,
+                AvroDecimalProperty = 13.42m,
+                GuidNullableProperty = null,
+                GuidProperty = Guid.NewGuid(),
+                DateNullableProperty = null,
+                DateProperty = new DateTime(2022, 05, 26, 14, 57, 24, 123),
+                DateTimeMicrosecondNullableProperty = null,
+                DateTimeMicrosecondProperty = DateTime.UtcNow,
+                DateTimeMillisecondNullableProperty = null,
+                DateTimeMillisecondProperty = DateTime.UtcNow,
+                TimeSpanMicrosecondNullableProperty = null,
+                TimeSpanMicrosecondProperty = new TimeSpan(23, 59, 59),
+                TimeSpanMillisecondNullableProperty = null,
+                TimeSpanMillisecondProperty = new TimeSpan(23, 59, 59),
+            };
+
+            var schema = Schema.Parse(SchemaJson);
+            var writer = new ReflectWriter<TestObject>(schema);
+            var reader = new ReflectReader<TestObject>(schema, schema);
+            var writeStream = new MemoryStream();
+            var writeBinaryEncoder = new BinaryEncoder(writeStream);
+
+            //Act
+            writer.Write(obj, writeBinaryEncoder);
+            var data = writeStream.ToArray();
+
+            var readStream = new MemoryStream(data);
+            var result = reader.Read(null, new BinaryDecoder(readStream));
+
+            //Assert
+            Assert.NotNull(result);
+            Assert.AreEqual(obj.AvroDecimalNullableProperty, result.AvroDecimalNullableProperty);
+            Assert.AreEqual(obj.AvroDecimalProperty, result.AvroDecimalProperty);
+            Assert.AreEqual(obj.GuidNullableProperty, result.GuidNullableProperty);
+            Assert.AreEqual(obj.GuidProperty, result.GuidProperty);
+            Assert.IsNull(obj.DateNullableProperty);
+            Assert.AreEqual(obj.DateProperty.Date, result.DateProperty);
+            Assert.AreEqual(obj.DateTimeMicrosecondNullableProperty, obj.DateTimeMicrosecondNullableProperty);
+            Assert.AreEqual(obj.DateTimeMicrosecondProperty, obj.DateTimeMicrosecondProperty);
+            Assert.IsNull(result.DateTimeMillisecondNullableProperty);
+            Assert.AreEqual((obj.DateTimeMillisecondProperty.Ticks / 10000) * 10000, result.DateTimeMillisecondProperty.Ticks);
+            Assert.AreEqual(obj.TimeSpanMicrosecondNullableProperty, result.TimeSpanMicrosecondNullableProperty);
+            Assert.AreEqual(obj.TimeSpanMicrosecondProperty, result.TimeSpanMicrosecondProperty);
+            Assert.AreEqual(obj.TimeSpanMillisecondNullableProperty, result.TimeSpanMillisecondNullableProperty);
+            Assert.AreEqual(obj.TimeSpanMillisecondProperty, result.TimeSpanMillisecondProperty);
+        }
+
+        [TestCase]
+        public void WriteAndReadObjectsWithLogicalSchemaFields_WithoutNullValues()
+        {
+            //Arrange
+            var obj = new TestObject
+            {
+                AvroDecimalNullableProperty = 136.42m,
+                AvroDecimalProperty = 13.42m,
+                GuidNullableProperty = Guid.NewGuid(),
+                GuidProperty = Guid.NewGuid(),
+                DateNullableProperty = new DateTime(2022, 05, 26, 14, 57, 24, 123),
+                DateProperty = new DateTime(2022, 05, 26, 14, 57, 24, 123),
+                DateTimeMicrosecondNullableProperty = DateTime.UtcNow,
+                DateTimeMicrosecondProperty = DateTime.UtcNow,
+                DateTimeMillisecondNullableProperty = DateTime.UtcNow,
+                DateTimeMillisecondProperty = DateTime.UtcNow,
+                TimeSpanMicrosecondNullableProperty = new TimeSpan(23, 59, 59),
+                TimeSpanMicrosecondProperty = new TimeSpan(23, 59, 59),
+                TimeSpanMillisecondNullableProperty = new TimeSpan(23, 59, 59),
+                TimeSpanMillisecondProperty = new TimeSpan(23, 59, 59),
+            };
+
+            var schema = Schema.Parse(SchemaJson);
+            var writer = new ReflectWriter<TestObject>(schema);
+            var reader = new ReflectReader<TestObject>(schema, schema);
+            var writeStream = new MemoryStream();
+            var writeBinaryEncoder = new BinaryEncoder(writeStream);
+
+            //Act
+            writer.Write(obj, writeBinaryEncoder);
+            var data = writeStream.ToArray();
+
+            var readStream = new MemoryStream(data);
+            var result = reader.Read(null, new BinaryDecoder(readStream));
+
+            //Assert
+            Assert.NotNull(result);
+            Assert.AreEqual(obj.AvroDecimalNullableProperty, result.AvroDecimalNullableProperty);
+            Assert.AreEqual(obj.AvroDecimalProperty, result.AvroDecimalProperty);
+            Assert.AreEqual(obj.GuidNullableProperty, result.GuidNullableProperty);
+            Assert.AreEqual(obj.GuidProperty, result.GuidProperty);
+            Assert.AreEqual(obj.DateNullableProperty?.Date, result.DateProperty);
+            Assert.AreEqual(obj.DateProperty.Date, result.DateProperty);
+            Assert.AreEqual(obj.DateTimeMicrosecondNullableProperty, obj.DateTimeMicrosecondNullableProperty);
+            Assert.AreEqual(obj.DateTimeMicrosecondProperty, obj.DateTimeMicrosecondProperty);

Review Comment:
   Done



##########
lang/csharp/src/apache/test/Reflect/TestLogicalSchema.cs:
##########
@@ -0,0 +1,177 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     https://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+using System;
+using System.IO;
+using Avro.IO;
+using Avro.Reflect;
+using NUnit.Framework;
+
+namespace Avro.test.Reflect
+{
+    public class TestLogicalSchema
+    {
+        [TestCase]
+        public void WriteAndReadObjectsWithLogicalSchemaFields_WithNullValues()
+        {
+            //Arrange
+            var obj = new TestObject
+            {
+                AvroDecimalNullableProperty = null,
+                AvroDecimalProperty = 13.42m,
+                GuidNullableProperty = null,
+                GuidProperty = Guid.NewGuid(),
+                DateNullableProperty = null,
+                DateProperty = new DateTime(2022, 05, 26, 14, 57, 24, 123),
+                DateTimeMicrosecondNullableProperty = null,
+                DateTimeMicrosecondProperty = DateTime.UtcNow,
+                DateTimeMillisecondNullableProperty = null,
+                DateTimeMillisecondProperty = DateTime.UtcNow,
+                TimeSpanMicrosecondNullableProperty = null,
+                TimeSpanMicrosecondProperty = new TimeSpan(23, 59, 59),
+                TimeSpanMillisecondNullableProperty = null,
+                TimeSpanMillisecondProperty = new TimeSpan(23, 59, 59),
+            };
+
+            var schema = Schema.Parse(SchemaJson);
+            var writer = new ReflectWriter<TestObject>(schema);
+            var reader = new ReflectReader<TestObject>(schema, schema);
+            var writeStream = new MemoryStream();
+            var writeBinaryEncoder = new BinaryEncoder(writeStream);
+
+            //Act
+            writer.Write(obj, writeBinaryEncoder);
+            var data = writeStream.ToArray();
+
+            var readStream = new MemoryStream(data);
+            var result = reader.Read(null, new BinaryDecoder(readStream));
+
+            //Assert
+            Assert.NotNull(result);
+            Assert.AreEqual(obj.AvroDecimalNullableProperty, result.AvroDecimalNullableProperty);
+            Assert.AreEqual(obj.AvroDecimalProperty, result.AvroDecimalProperty);
+            Assert.AreEqual(obj.GuidNullableProperty, result.GuidNullableProperty);
+            Assert.AreEqual(obj.GuidProperty, result.GuidProperty);
+            Assert.IsNull(obj.DateNullableProperty);
+            Assert.AreEqual(obj.DateProperty.Date, result.DateProperty);
+            Assert.AreEqual(obj.DateTimeMicrosecondNullableProperty, obj.DateTimeMicrosecondNullableProperty);
+            Assert.AreEqual(obj.DateTimeMicrosecondProperty, obj.DateTimeMicrosecondProperty);
+            Assert.IsNull(result.DateTimeMillisecondNullableProperty);
+            Assert.AreEqual((obj.DateTimeMillisecondProperty.Ticks / 10000) * 10000, result.DateTimeMillisecondProperty.Ticks);
+            Assert.AreEqual(obj.TimeSpanMicrosecondNullableProperty, result.TimeSpanMicrosecondNullableProperty);
+            Assert.AreEqual(obj.TimeSpanMicrosecondProperty, result.TimeSpanMicrosecondProperty);
+            Assert.AreEqual(obj.TimeSpanMillisecondNullableProperty, result.TimeSpanMillisecondNullableProperty);
+            Assert.AreEqual(obj.TimeSpanMillisecondProperty, result.TimeSpanMillisecondProperty);
+        }
+
+        [TestCase]
+        public void WriteAndReadObjectsWithLogicalSchemaFields_WithoutNullValues()
+        {
+            //Arrange
+            var obj = new TestObject
+            {
+                AvroDecimalNullableProperty = 136.42m,
+                AvroDecimalProperty = 13.42m,
+                GuidNullableProperty = Guid.NewGuid(),
+                GuidProperty = Guid.NewGuid(),
+                DateNullableProperty = new DateTime(2022, 05, 26, 14, 57, 24, 123),
+                DateProperty = new DateTime(2022, 05, 26, 14, 57, 24, 123),
+                DateTimeMicrosecondNullableProperty = DateTime.UtcNow,
+                DateTimeMicrosecondProperty = DateTime.UtcNow,
+                DateTimeMillisecondNullableProperty = DateTime.UtcNow,
+                DateTimeMillisecondProperty = DateTime.UtcNow,
+                TimeSpanMicrosecondNullableProperty = new TimeSpan(23, 59, 59),
+                TimeSpanMicrosecondProperty = new TimeSpan(23, 59, 59),
+                TimeSpanMillisecondNullableProperty = new TimeSpan(23, 59, 59),
+                TimeSpanMillisecondProperty = new TimeSpan(23, 59, 59),
+            };
+
+            var schema = Schema.Parse(SchemaJson);
+            var writer = new ReflectWriter<TestObject>(schema);
+            var reader = new ReflectReader<TestObject>(schema, schema);
+            var writeStream = new MemoryStream();
+            var writeBinaryEncoder = new BinaryEncoder(writeStream);
+
+            //Act
+            writer.Write(obj, writeBinaryEncoder);
+            var data = writeStream.ToArray();
+
+            var readStream = new MemoryStream(data);
+            var result = reader.Read(null, new BinaryDecoder(readStream));
+
+            //Assert
+            Assert.NotNull(result);
+            Assert.AreEqual(obj.AvroDecimalNullableProperty, result.AvroDecimalNullableProperty);
+            Assert.AreEqual(obj.AvroDecimalProperty, result.AvroDecimalProperty);
+            Assert.AreEqual(obj.GuidNullableProperty, result.GuidNullableProperty);
+            Assert.AreEqual(obj.GuidProperty, result.GuidProperty);
+            Assert.AreEqual(obj.DateNullableProperty?.Date, result.DateProperty);
+            Assert.AreEqual(obj.DateProperty.Date, result.DateProperty);
+            Assert.AreEqual(obj.DateTimeMicrosecondNullableProperty, obj.DateTimeMicrosecondNullableProperty);
+            Assert.AreEqual(obj.DateTimeMicrosecondProperty, obj.DateTimeMicrosecondProperty);
+            Assert.AreEqual((obj.TimeSpanMicrosecondNullableProperty?.Ticks / 10000) * 10000, result.TimeSpanMicrosecondNullableProperty?.Ticks);

Review Comment:
   Done



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: issues-unsubscribe@avro.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


[GitHub] [avro] KhrystynaPopadyuk commented on pull request #1718: AVRO-3434: support logical schemas in reflect reader and writer

Posted by GitBox <gi...@apache.org>.
KhrystynaPopadyuk commented on PR #1718:
URL: https://github.com/apache/avro/pull/1718#issuecomment-1328371316

   Hi @RyanSkraba and @martin-g ,
   
   Is there any update about next version release? 
   What can be done to speed up a release?
   
   Best Regards,
   Khrystyna


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: issues-unsubscribe@avro.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


[GitHub] [avro] martin-g commented on pull request #1718: AVRO-3434: support logical schemas in reflect reader and writer

Posted by GitBox <gi...@apache.org>.
martin-g commented on PR #1718:
URL: https://github.com/apache/avro/pull/1718#issuecomment-1209004962

   Thank you for the contribution, @KhrystynaPopadyuk !


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: issues-unsubscribe@avro.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


[GitHub] [avro] martin-g commented on pull request #1718: AVRO-3434: support logical schemas in reflect reader and writer

Posted by GitBox <gi...@apache.org>.
martin-g commented on PR #1718:
URL: https://github.com/apache/avro/pull/1718#issuecomment-1293067314

   @RyanSkraba ^^


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: issues-unsubscribe@avro.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


[GitHub] [avro] martin-g commented on pull request #1718: AVRO-3434: support logical schemas in reflect reader and writer

Posted by GitBox <gi...@apache.org>.
martin-g commented on PR #1718:
URL: https://github.com/apache/avro/pull/1718#issuecomment-1345992489

   Hi @KhrystynaPopadyuk !
   
   Usually when you send a subscribe request one gets a response few minutes/seconds later.
   Please send a new email to  dev-subscribe@avro.apache.org and check your SPAM folder.
   If it still does not work then I will contact Apache Infra team to check what might be the problem!


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: issues-unsubscribe@avro.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


[GitHub] [avro] martin-g commented on pull request #1718: AVRO-3434: support logical schemas in reflect reader and writer

Posted by GitBox <gi...@apache.org>.
martin-g commented on PR #1718:
URL: https://github.com/apache/avro/pull/1718#issuecomment-1328927511

   The best anyone could do is to review PRs and (dis)approve them.
   The second best is to subscribe to the dev@avro.apache.org mailing list and participate in the discussions: https://lists.apache.org/thread/b47spn5h7fyhp8dso6zlsrls058fcby8


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: issues-unsubscribe@avro.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


[GitHub] [avro] KalleOlaviNiemitalo commented on a diff in pull request #1718: AVRO-3434: support logical schemas in reflect reader and writer

Posted by GitBox <gi...@apache.org>.
KalleOlaviNiemitalo commented on code in PR #1718:
URL: https://github.com/apache/avro/pull/1718#discussion_r910030936


##########
lang/csharp/src/apache/main/Reflect/DotnetProperty.cs:
##########
@@ -74,34 +75,38 @@ private bool IsPropertyCompatible(Avro.Schema.Type schemaTag)
                     return propType == typeof(byte[]);
                 case Avro.Schema.Type.Error:
                     return propType.IsClass;
+                case Avro.Schema.Type.Logical:
+                    var logicalSchema = (LogicalSchema)schema;
+                    var type = logicalSchema.LogicalType.GetCSharpType(false);
+                    return type == propType;
             }
 
             return false;
         }
 
-        public DotnetProperty(PropertyInfo property, Avro.Schema.Type schemaTag,  IAvroFieldConverter converter, ClassCache cache)
+        public DotnetProperty(PropertyInfo property, Avro.Schema schema, IAvroFieldConverter converter, ClassCache cache)

Review Comment:
   This does not break public API because DotnetProperty is an internal class.



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: issues-unsubscribe@avro.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


[GitHub] [avro] khrystynapopadyukwexinccom commented on pull request #1718: AVRO-3434: support logical schemas in reflect reader and writer

Posted by GitBox <gi...@apache.org>.
khrystynapopadyukwexinccom commented on PR #1718:
URL: https://github.com/apache/avro/pull/1718#issuecomment-1208833522

   Hi @KalleOlaviNiemitalo , Do you know how I can request merge? Or how I can contact committers?


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: issues-unsubscribe@avro.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


[GitHub] [avro] KhrystynaPopadyuk commented on pull request #1718: AVRO-3434: support logical schemas in reflect reader and writer

Posted by GitBox <gi...@apache.org>.
KhrystynaPopadyuk commented on PR #1718:
URL: https://github.com/apache/avro/pull/1718#issuecomment-1347582343

   Hi @vivere-dally ,
   
   This one is critical for users of ReflectReader and ReflectWriter who need de serialize objects with logical type. It can happen only if such object is serialized by third party who can use logical type. Not sure how many such users exist. For my company it is critical. 
   
   Unfortunately there is no way handle it because there is no way to override default logic or inject custom behavior. I create https://github.com/apache/avro/pull/2009 with attempt to bring some flexibility. Would appreciate if you can review it.


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: issues-unsubscribe@avro.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


[GitHub] [avro] KhrystynaPopadyuk commented on pull request #1718: AVRO-3434: support logical schemas in reflect reader and writer

Posted by GitBox <gi...@apache.org>.
KhrystynaPopadyuk commented on PR #1718:
URL: https://github.com/apache/avro/pull/1718#issuecomment-1207503385

   Hi @RyanSkraba ,
   Do you have permission to merge this PR?


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: issues-unsubscribe@avro.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


[GitHub] [avro] KhrystynaPopadyuk commented on pull request #1718: AVRO-3434: support logical schemas in reflect reader and writer

Posted by GitBox <gi...@apache.org>.
KhrystynaPopadyuk commented on PR #1718:
URL: https://github.com/apache/avro/pull/1718#issuecomment-1291261283

   Hi @martin-g ,
   
   This story (PR) is assigned to two versions 1.12.0 and 1.11.2. Do you know when release of that versions is scheduled? 


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: issues-unsubscribe@avro.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


[GitHub] [avro] KhrystynaPopadyuk commented on pull request #1718: AVRO-3434: support logical schemas in reflect reader and writer

Posted by GitBox <gi...@apache.org>.
KhrystynaPopadyuk commented on PR #1718:
URL: https://github.com/apache/avro/pull/1718#issuecomment-1174493332

   Hi @RyanSkraba ,
   The PR is updated


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: issues-unsubscribe@avro.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


[GitHub] [avro] KalleOlaviNiemitalo commented on pull request #1718: AVRO-3434: support logical schemas in reflect reader and writer

Posted by GitBox <gi...@apache.org>.
KalleOlaviNiemitalo commented on PR #1718:
URL: https://github.com/apache/avro/pull/1718#issuecomment-1174636807

   The tests look correct now, but GitHub did not run them yet


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: issues-unsubscribe@avro.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


[GitHub] [avro] RyanSkraba commented on pull request #1718: AVRO-3434: support logical schemas in reflect reader and writer

Posted by GitBox <gi...@apache.org>.
RyanSkraba commented on PR #1718:
URL: https://github.com/apache/avro/pull/1718#issuecomment-1170045279

   Hello!  Is this a non-breaking change that should be included in the 1.11.1 release (coming as soon as possible)?  Anyone with C# expertise (committer or not) can review this, and then any committer can merge it!
   
   Anyone?


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: issues-unsubscribe@avro.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


[GitHub] [avro] vivere-dally commented on pull request #1718: AVRO-3434: support logical schemas in reflect reader and writer

Posted by GitBox <gi...@apache.org>.
vivere-dally commented on PR #1718:
URL: https://github.com/apache/avro/pull/1718#issuecomment-1346837143

   This is a crucial update for dotnet. This coupling between languages seems troublesome. Why do people using the c#  package have to wait for features for the java package? This does not make any sense.
   Is there any workaround to handle logic types in c# until this is merged?


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: issues-unsubscribe@avro.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


[GitHub] [avro] martin-g commented on pull request #1718: AVRO-3434: support logical schemas in reflect reader and writer

Posted by GitBox <gi...@apache.org>.
martin-g commented on PR #1718:
URL: https://github.com/apache/avro/pull/1718#issuecomment-1345997318

   > PS. I do not have access to approve or reject PRs in git. Also I can review only C# PRs
   
   You mean Github, I guess ?
   
   Reviewing C# PRs is more than good for us! Because there are/were many C# contributors and not so many Avro team members who maintain this module. 
   
   Please add comments like "LGTM" (Looks good to me) or something similar if the "Approve/Require changes" UI in Github is not active for you!


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: issues-unsubscribe@avro.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


[GitHub] [avro] KhrystynaPopadyuk commented on pull request #1718: AVRO-3434: support logical schemas in reflect reader and writer

Posted by GitBox <gi...@apache.org>.
KhrystynaPopadyuk commented on PR #1718:
URL: https://github.com/apache/avro/pull/1718#issuecomment-1345701600

   Hi @martin-g ,
   
   After research I figured out that to subscribe to [dev@avro.apache.org](mailto:dev@avro.apache.org) I need send email to dev-subscribe@avro.apache.org I did it 12 days ago and there is no response.
   ![image](https://user-images.githubusercontent.com/6771394/206937287-e90d0956-9e90-425a-8840-4692246cebe1.png)
   What else I have to do to subscribe?
   
   Also I reviewed stories that is marked as 1.11.2 and there is just few for .NET, all looks good for me. Could you please explain what exactly blocks .NET nuget package release?
   
   PS. I do not have access to approve or reject PRs in git. Also I can review only C# PRs
   


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: issues-unsubscribe@avro.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


[GitHub] [avro] martin-g commented on pull request #1718: AVRO-3434: support logical schemas in reflect reader and writer

Posted by GitBox <gi...@apache.org>.
martin-g commented on PR #1718:
URL: https://github.com/apache/avro/pull/1718#issuecomment-1350511623

   > Is there any work/discussion to decouple languages to remove dependency and prevent such blocks in future?
   > Also, is there work/discussion to use CI/CD approach to streamline releases (automatically release package on merge to main, for example)?
   
   There were some discussions to be possible to release separate modules/langs but there was no final decision.
   
   About CI/CD: No! The ASF release policies are explained [here](https://www.apache.org/legal/release-policy.html) 


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: issues-unsubscribe@avro.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org