From 981f2076cfa8f1edd0baf9ddb3f96ad3e797f358 Mon Sep 17 00:00:00 2001 From: Ben Pope Date: Wed, 16 Nov 2022 20:41:54 +0000 Subject: [PATCH 1/2] Update Avro Signed-off-by: Ben Pope (cherry picked from commit 3f95ed89aac083e9bdf2932c97bcf992c67131c4) --- cmake/oss.cmake.in | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cmake/oss.cmake.in b/cmake/oss.cmake.in index 34fd21b703ce..8694d77bde82 100644 --- a/cmake/oss.cmake.in +++ b/cmake/oss.cmake.in @@ -284,7 +284,7 @@ ExternalProject_Add(ctre ExternalProject_Add(avro GIT_REPOSITORY https://github.com/redpanda-data/avro - GIT_TAG 53250636b5223e434a9819a34e7b5b89e829ffb8 + GIT_TAG 6b2896c2720e799371ea6f35b492d62171872e39 INSTALL_DIR @REDPANDA_DEPS_INSTALL_DIR@ CMAKE_COMMAND ${CMAKE_COMMAND} -E env ${cmake_build_env} ${CMAKE_COMMAND} CMAKE_ARGS From ecfbbf05c45ddc8fef6761b5948b30ab79b69374 Mon Sep 17 00:00:00 2001 From: Ben Pope Date: Wed, 16 Nov 2022 16:44:30 +0000 Subject: [PATCH 2/2] schema_registry: Support JSON custom attributes on fields Signed-off-by: Ben Pope (cherry picked from commit eb18a6b22eec7362fa072900b3ae8dc6f0881292) --- .../test/compatibility_avro.cc | 25 +++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/src/v/pandaproxy/schema_registry/test/compatibility_avro.cc b/src/v/pandaproxy/schema_registry/test/compatibility_avro.cc index 95dae3832b77..9c6ff1577aa2 100644 --- a/src/v/pandaproxy/schema_registry/test/compatibility_avro.cc +++ b/src/v/pandaproxy/schema_registry/test/compatibility_avro.cc @@ -250,3 +250,28 @@ SEASTAR_THREAD_TEST_CASE(test_avro_schema_definition) { pps::canonical_schema_definition avro_conversion{valid}; BOOST_CHECK_EQUAL(expected, avro_conversion); } + +SEASTAR_THREAD_TEST_CASE(test_avro_schema_definition_custom_attributes) { + // https://github.com/redpanda-data/redpanda/issues/7274 + // custom attributes supported only at field level + const auto avro_metadata_schema + = pps::sanitize_avro_schema_definition( + {R"({"type":"record","name":"foo","ignored_attr":true,"fields":[{"name":"bar","type":"float","extra_attr":true}]})", + pps::schema_type::avro}) + .value(); + pps::canonical_schema_definition expected{ + R"({"type":"record","name":"foo","fields":[{"name":"bar","type":"float","extra_attr":true}]})", + pps::schema_type::avro}; + pps::sharded_store s; + auto valid = pps::make_avro_schema_definition( + s, + {pps::subject("s2"), + {avro_metadata_schema.raw(), pps::schema_type::avro}}) + .get(); + static_assert( + std:: + is_same_v, pps::avro_schema_definition>, + "schema2 is an avro_schema_definition"); + pps::canonical_schema_definition avro_conversion{valid}; + BOOST_CHECK_EQUAL(expected, avro_conversion); +}