This is an automated email from the ASF dual-hosted git repository.

opwvhk pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/avro.git


The following commit(s) were added to refs/heads/main by this push:
     new d5d5466d8d AVRO-4090: Avoid repeating data validation (#3241)
d5d5466d8d is described below

commit d5d5466d8d8a36fcbecbc924515174638f7ad515
Author: Thiago Romão Barcala <[email protected]>
AuthorDate: Fri Apr 18 22:31:41 2025 +0200

    AVRO-4090: Avoid repeating data validation (#3241)
---
 lang/php/lib/Datum/AvroIODatumWriter.php | 23 ++++++++++++++++++-----
 1 file changed, 18 insertions(+), 5 deletions(-)

diff --git a/lang/php/lib/Datum/AvroIODatumWriter.php 
b/lang/php/lib/Datum/AvroIODatumWriter.php
index 000f070690..ef8031f763 100644
--- a/lang/php/lib/Datum/AvroIODatumWriter.php
+++ b/lang/php/lib/Datum/AvroIODatumWriter.php
@@ -59,7 +59,7 @@ class AvroIODatumWriter
      * @param AvroSchema $writers_schema
      * @param $datum
      * @param AvroIOBinaryEncoder $encoder
-     * @returns mixed
+     * @return mixed
      *
      * @throws AvroIOTypeException if $datum is invalid for $writers_schema
      */
@@ -69,6 +69,19 @@ class AvroIODatumWriter
             throw new AvroIOTypeException($writers_schema, $datum);
         }
 
+        return $this->writeValidatedData($writers_schema, $datum, $encoder);
+    }
+
+    /**
+     * @param AvroSchema $writers_schema
+     * @param $datum
+     * @param AvroIOBinaryEncoder $encoder
+     * @return mixed
+     *
+     * @throws AvroIOTypeException if $datum is invalid for $writers_schema
+     */
+    private function writeValidatedData($writers_schema, $datum, $encoder)
+    {
         switch ($writers_schema->type()) {
             case AvroSchema::NULL_TYPE:
                 return $encoder->writeNull($datum);
@@ -120,7 +133,7 @@ class AvroIODatumWriter
             $encoder->writeLong($datum_count);
             $items = $writers_schema->items();
             foreach ($datum as $item) {
-                $this->writeData($items, $item, $encoder);
+                $this->writeValidatedData($items, $item, $encoder);
             }
         }
         return $encoder->writeLong(0);
@@ -139,7 +152,7 @@ class AvroIODatumWriter
             $encoder->writeLong($datum_count);
             foreach ($datum as $k => $v) {
                 $encoder->writeString($k);
-                $this->writeData($writers_schema->values(), $v, $encoder);
+                $this->writeValidatedData($writers_schema->values(), $v, 
$encoder);
             }
         }
         $encoder->writeLong(0);
@@ -163,7 +176,7 @@ class AvroIODatumWriter
     private function writeRecord($writers_schema, $datum, $encoder)
     {
         foreach ($writers_schema->fields() as $field) {
-            $this->writeData($field->type(), $datum[$field->name()] ?? null, 
$encoder);
+            $this->writeValidatedData($field->type(), $datum[$field->name()] 
?? null, $encoder);
         }
     }
 
@@ -184,6 +197,6 @@ class AvroIODatumWriter
         }
 
         $encoder->writeLong($datum_schema_index);
-        $this->writeData($datum_schema, $datum, $encoder);
+        $this->writeValidatedData($datum_schema, $datum, $encoder);
     }
 }

Reply via email to