From 8f4d50ab890352ad65b71a00c40956a11f09af0b Mon Sep 17 00:00:00 2001 From: Stephen Keatley Date: Mon, 24 Mar 2025 13:56:44 +0000 Subject: [PATCH] AIR-33014: Maps allow integers as keys --- lib/avro/datum.php | 2 +- lib/avro/schema.php | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/avro/datum.php b/lib/avro/datum.php index b328853..37b68e8 100644 --- a/lib/avro/datum.php +++ b/lib/avro/datum.php @@ -242,7 +242,7 @@ private function write_map($writers_schema, $datum, $encoder) $encoder->write_long($datum_count); foreach ($datum as $k => $v) { - $encoder->write_string($k); + $encoder->write_string((string) $k); $this->write_data($writers_schema->values(), $v, $encoder); } } diff --git a/lib/avro/schema.php b/lib/avro/schema.php index 89b0de0..745a973 100644 --- a/lib/avro/schema.php +++ b/lib/avro/schema.php @@ -446,7 +446,7 @@ public static function is_valid_datum($expected_schema, $datum) if (is_array($datum)) { foreach ($datum as $k => $v) - if (!is_string($k) + if ((!is_string($k) && !is_int($k)) || !self::is_valid_datum($expected_schema->values(), $v)) return false; return true;