diff --git a/changelog.d/24773_support_more_avro_types.fix.md b/changelog.d/24773_support_more_avro_types.fix.md new file mode 100644 index 0000000000000..47d44a6bee32b --- /dev/null +++ b/changelog.d/24773_support_more_avro_types.fix.md @@ -0,0 +1,3 @@ +The Avro codec now supports encoding and decoding Date, Fixed, TimeMillis, TimestampNanos, LocalTimestampNanos values. + +authors: omwbennett diff --git a/lib/codecs/Cargo.toml b/lib/codecs/Cargo.toml index 0c24d81913846..7f42e3258e304 100644 --- a/lib/codecs/Cargo.toml +++ b/lib/codecs/Cargo.toml @@ -63,6 +63,7 @@ vector-config-macros = { path = "../vector-config-macros", default-features = fa vector-core = { path = "../vector-core", default-features = false, features = ["vrl"] } vector-vrl-functions.workspace = true toml = { version = "0.9.8", optional = true } +uuid.workspace = true [dev-dependencies] criterion.workspace = true @@ -74,7 +75,6 @@ similar-asserts = "1.7.0" vector-core = { path = "../vector-core", default-features = false, features = ["vrl", "test"] } rstest = "0.26.1" tracing-test = "0.2.6" -uuid.workspace = true vrl.workspace = true [features] diff --git a/lib/codecs/src/decoding/format/avro.rs b/lib/codecs/src/decoding/format/avro.rs index 73a703b72ca38..f49c9c86b0691 100644 --- a/lib/codecs/src/decoding/format/avro.rs +++ b/lib/codecs/src/decoding/format/avro.rs @@ -91,11 +91,8 @@ impl From<&AvroDeserializerOptions> for AvroSerializerOptions { pub struct AvroDeserializerOptions { /// The Avro schema definition. /// **Note**: The following [`apache_avro::types::Value`] variants are *not* supported: - /// * `Date` /// * `Decimal` /// * `Duration` - /// * `Fixed` - /// * `TimeMillis` #[configurable(metadata( docs::examples = r#"{ "type": "record", "name": "log", "fields": [{ "name": "message", "type": "string" }] }"#, docs::additional_props_description = r#"Supports most avro data types, unsupported data types includes @@ -189,10 +186,8 @@ pub fn try_from(value: AvroValue) -> vector_common::Result { Ok(VrlValue::Array(vector)) } AvroValue::Boolean(boolean) => Ok(VrlValue::from(boolean)), - AvroValue::Bytes(bytes) => Ok(VrlValue::from(bytes)), - AvroValue::Date(_) => Err(vector_common::Error::from( - "AvroValue::Date is not supported", - )), + AvroValue::Bytes(bytes) => Ok(VrlValue::Bytes(Bytes::from(bytes))), + AvroValue::Date(days) => Ok(VrlValue::from(days)), AvroValue::Decimal(_) => Err(vector_common::Error::from( "AvroValue::Decimal is not supported", )), @@ -201,9 +196,7 @@ pub fn try_from(value: AvroValue) -> vector_common::Result { "AvroValue::Duration is not supported", )), AvroValue::Enum(_, string) => Ok(VrlValue::from(string)), - AvroValue::Fixed(_, _) => Err(vector_common::Error::from( - "AvroValue::Fixed is not supported", - )), + AvroValue::Fixed(_, bytes) => Ok(VrlValue::Bytes(Bytes::from(bytes))), AvroValue::Float(float) => Ok(VrlValue::from_f64_or_zero(float as f64)), AvroValue::Int(int) => Ok(VrlValue::from(int)), AvroValue::Long(long) => Ok(VrlValue::from(long)), @@ -220,9 +213,7 @@ pub fn try_from(value: AvroValue) -> vector_common::Result { .map(|v| VrlValue::Object(v.into_iter().collect())), AvroValue::String(string) => Ok(VrlValue::from(string)), AvroValue::TimeMicros(time_micros) => Ok(VrlValue::from(time_micros)), - AvroValue::TimeMillis(_) => Err(vector_common::Error::from( - "AvroValue::TimeMillis is not supported", - )), + AvroValue::TimeMillis(time_millis) => Ok(VrlValue::from(time_millis)), AvroValue::TimestampMicros(ts_micros) => Ok(VrlValue::from(ts_micros)), AvroValue::TimestampMillis(ts_millis) => Ok(VrlValue::from(ts_millis)), AvroValue::Union(_, v) => try_from(*v), @@ -232,12 +223,8 @@ pub fn try_from(value: AvroValue) -> vector_common::Result { AvroValue::BigDecimal(_) => Err(vector_common::Error::from( "AvroValue::BigDecimal is not supported", )), - AvroValue::TimestampNanos(_) => Err(vector_common::Error::from( - "AvroValue::TimestampNanos is not supported", - )), - AvroValue::LocalTimestampNanos(_) => Err(vector_common::Error::from( - "AvroValue::LocalTimestampNanos is not supported", - )), + AvroValue::TimestampNanos(ts_nanos) => Ok(VrlValue::from(ts_nanos)), + AvroValue::LocalTimestampNanos(ts_nanos) => Ok(VrlValue::from(ts_nanos)), } } diff --git a/lib/codecs/src/encoding/format/avro.rs b/lib/codecs/src/encoding/format/avro.rs index 304dcc2e7cc90..6ccf15e498164 100644 --- a/lib/codecs/src/encoding/format/avro.rs +++ b/lib/codecs/src/encoding/format/avro.rs @@ -6,6 +6,116 @@ use vector_core::{config::DataType, event::Event, schema}; use crate::encoding::BuildError; +type AvroValue = apache_avro::types::Value; + +/// `apache_avro::to_value` may serialize VRL values into Avro types which later +/// cannot be resolved against certain Avro types +/// (e.g. VRL integer (i64) -> Avro `Long` which cannot be resolved to Avro `Date`). +/// `coerce_logical_types` does a recursive pre-pass to fix such cases. +fn coerce_logical_types( + value: AvroValue, + schema: &apache_avro::Schema, + names: &apache_avro::schema::NamesRef<'_>, +) -> vector_common::Result { + use apache_avro::Schema; + match (value, schema) { + (AvroValue::Long(days), Schema::Date) => { + i32::try_from(days).map(AvroValue::Date).map_err(|_| { + vector_common::Error::from(format!( + "Avro date value {days} is out of range for i32" + )) + }) + } + (AvroValue::Long(millis), Schema::TimeMillis) => i32::try_from(millis) + .map(AvroValue::TimeMillis) + .map_err(|_| { + vector_common::Error::from(format!( + "Avro time-millis value {millis} is out of range for i32" + )) + }), + (value, Schema::Ref { name }) => { + let schema = names.get(name).ok_or_else(|| { + vector_common::Error::from(format!("Unknown schema ref: {}", name.fullname(None))) + })?; + coerce_logical_types(value, schema, names) + } + (AvroValue::Record(fields), Schema::Record(record_schema)) => { + let fields = fields + .into_iter() + .map(|(name, value)| { + let value = match record_schema.lookup.get(&name) { + Some(index) => { + let field_schema = &record_schema.fields[*index].schema; + coerce_logical_types(value, field_schema, names)? + } + None => value, + }; + Ok((name, value)) + }) + .collect::>>()?; + Ok(AvroValue::Record(fields)) + } + (AvroValue::Map(entries), Schema::Record(record_schema)) => { + let entries = entries + .into_iter() + .map(|(name, value)| { + let value = match record_schema.lookup.get(&name) { + Some(index) => { + let field_schema = &record_schema.fields[*index].schema; + coerce_logical_types(value, field_schema, names)? + } + None => value, + }; + Ok((name, value)) + }) + .collect::>()?; + Ok(AvroValue::Map(entries)) + } + (AvroValue::Array(items), Schema::Array(array_schema)) => items + .into_iter() + .map(|item| coerce_logical_types(item, &array_schema.items, names)) + .collect::, _>>() + .map(AvroValue::Array), + (AvroValue::Map(entries), Schema::Map(map_schema)) => entries + .into_iter() + .map(|(key, value)| { + coerce_logical_types(value, &map_schema.types, names).map(|value| (key, value)) + }) + .collect::>() + .map(AvroValue::Map), + (AvroValue::Union(index, value), Schema::Union(union_schema)) => { + let schema = union_schema + .variants() + .get(index as usize) + .unwrap_or(schema); + coerce_logical_types(*value, schema, names) + .map(|value| AvroValue::Union(index, Box::new(value))) + } + (value, Schema::Union(union_schema)) => { + if let Ok(resolved) = value.clone().resolve(schema) { + return Ok(resolved); + } + + let mut last_err = None; + for (index, variant) in union_schema.variants().iter().enumerate() { + match coerce_logical_types(value.clone(), variant, names) { + Ok(coerced) if coerced.clone().resolve(variant).is_ok() => { + return Ok(AvroValue::Union(index as u32, Box::new(coerced))); + } + Ok(_) => {} + Err(err) => last_err = Some(err), + } + } + + match last_err { + Some(err) => Err(err), + None => Ok(value), + } + } + (value, _) => Ok(value), + } +} + /// Config used to build a `AvroSerializer`. #[derive(Debug, Clone, Deserialize, Serialize)] pub struct AvroSerializerConfig { @@ -71,6 +181,11 @@ impl Encoder for AvroSerializer { fn encode(&mut self, event: Event, buffer: &mut BytesMut) -> Result<(), Self::Error> { let log = event.into_log(); let value = apache_avro::to_value(log)?; + let resolved = + apache_avro::schema::ResolvedSchema::try_from(&self.schema).map_err(|error| { + vector_common::Error::from(format!("Failed resolving Avro schema: {error}")) + })?; + let value = coerce_logical_types(value, &self.schema, resolved.get_names())?; let value = value.resolve(&self.schema)?; let bytes = apache_avro::to_avro_datum(&self.schema, value)?; buffer.put_slice(&bytes); @@ -113,4 +228,193 @@ mod tests { assert_eq!(bytes.freeze(), b"\0\x06bar".as_slice()); } + + #[test] + fn coerce_date_fields_recursively() { + let schema = apache_avro::Schema::parse_str(indoc! {r#" + { + "type": "record", + "name": "Outer", + "fields": [ + { + "name": "direct_date", + "type": {"type": "int", "logicalType": "date"} + }, + { + "name": "inner", + "type": { + "type": "record", + "name": "Inner", + "fields": [ + { + "name": "date", + "type": {"type": "int", "logicalType": "date"} + } + ] + } + }, + { + "name": "record_as_map", + "type": { + "type": "record", + "name": "MapBackedInner", + "fields": [ + { + "name": "date", + "type": {"type": "int", "logicalType": "date"} + } + ] + } + }, + { + "name": "date_array", + "type": { + "type": "array", + "items": {"type": "int", "logicalType": "date"} + } + }, + { + "name": "date_map", + "type": { + "type": "map", + "values": {"type": "int", "logicalType": "date"} + } + }, + { + "name": "union_date", + "type": ["null", {"type": "int", "logicalType": "date"}] + }, + { + "name": "fallback_union_date", + "type": [ + "null", + {"type": "int", "logicalType": "date"}, + "long" + ] + }, + { + "name": "logical_only_union_date", + "type": [ + "null", + {"type": "int", "logicalType": "date"} + ] + } + ] + } + "#}) + .unwrap(); + let value = AvroValue::Record(vec![ + ("direct_date".to_owned(), AvroValue::Long(20_000)), + ( + "inner".to_owned(), + AvroValue::Record(vec![("date".to_owned(), AvroValue::Long(20_001))]), + ), + ( + "record_as_map".to_owned(), + AvroValue::Map( + [("date".to_owned(), AvroValue::Long(20_002))] + .into_iter() + .collect(), + ), + ), + ( + "date_array".to_owned(), + AvroValue::Array(vec![AvroValue::Long(20_003), AvroValue::Long(20_004)]), + ), + ( + "date_map".to_owned(), + AvroValue::Map( + [ + ("first".to_owned(), AvroValue::Long(20_005)), + ("second".to_owned(), AvroValue::Long(20_006)), + ] + .into_iter() + .collect(), + ), + ), + ("union_date".to_owned(), AvroValue::Long(20_007)), + ("fallback_union_date".to_owned(), AvroValue::Long(20_009)), + ( + "logical_only_union_date".to_owned(), + AvroValue::Long(20_008), + ), + ]); + + let resolved = apache_avro::schema::ResolvedSchema::try_from(&schema).unwrap(); + let value = coerce_logical_types(value, &schema, resolved.get_names()).unwrap(); + let value = value.resolve(&schema).unwrap(); + + assert!(matches!( + value, + AvroValue::Record(fields) if { + matches!(fields[0].1, AvroValue::Date(20_000)) + && matches!( + &fields[1].1, + AvroValue::Record(inner) if matches!(inner[0].1, AvroValue::Date(20_001)) + ) + && matches!( + &fields[2].1, + AvroValue::Record(inner) if matches!(inner[0].1, AvroValue::Date(20_002)) + ) + && matches!( + &fields[3].1, + AvroValue::Array(items) + if matches!(items.as_slice(), [AvroValue::Date(20_003), AvroValue::Date(20_004)]) + ) + && matches!( + &fields[4].1, + AvroValue::Map(entries) + if matches!(entries.get("first"), Some(AvroValue::Date(20_005))) + && matches!(entries.get("second"), Some(AvroValue::Date(20_006))) + ) + && matches!( + &fields[5].1, + AvroValue::Union(1, value) if matches!(value.as_ref(), AvroValue::Date(20_007)) + ) + && matches!( + &fields[6].1, + AvroValue::Union(2, value) + if matches!(value.as_ref(), AvroValue::Long(20_009)) + ) + && matches!( + &fields[7].1, + AvroValue::Union(1, value) if matches!(value.as_ref(), AvroValue::Date(20_008)) + ) + } + )); + } + + #[test] + fn coerce_date_through_named_record_reference() { + let schema = apache_avro::Schema::parse_str(indoc! {r#" + { + "type": "record", + "name": "Outer", + "fields": [ + { + "name": "definition", + "type": { + "type": "record", + "name": "Inner", + "fields": [{ + "name": "date", + "type": {"type": "int", "logicalType": "date"} + }] + } + }, + {"name": "reference", "type": "Inner"} + ] + } + "#}) + .unwrap(); + let inner = || AvroValue::Record(vec![("date".to_owned(), AvroValue::Long(20_000))]); + let value = AvroValue::Record(vec![ + ("definition".to_owned(), inner()), + ("reference".to_owned(), inner()), + ]); + + let resolved = apache_avro::schema::ResolvedSchema::try_from(&schema).unwrap(); + let value = coerce_logical_types(value, &schema, resolved.get_names()).unwrap(); + value.resolve(&schema).unwrap(); + } } diff --git a/lib/codecs/tests/avro.rs b/lib/codecs/tests/avro.rs index fff274706d7d9..b56c15dbea61b 100644 --- a/lib/codecs/tests/avro.rs +++ b/lib/codecs/tests/avro.rs @@ -21,9 +21,7 @@ use vector_core::{config::LogNamespace, event::Event}; #[case(true)] #[case(false)] fn roundtrip_avro_fixtures( - #[files("tests/data/avro/generated/*.avro")] - #[exclude(".*(date|fixed|time_millis).avro")] - path: PathBuf, + #[files("tests/data/avro/generated/*.avro")] path: PathBuf, #[case] reserialize: bool, ) { let schema_path = path.as_path().with_extension("avsc"); diff --git a/lib/codecs/tests/bin/generate-avro-fixtures.rs b/lib/codecs/tests/bin/generate-avro-fixtures.rs index 29f22ef0991c0..52430ce75b7d5 100644 --- a/lib/codecs/tests/bin/generate-avro-fixtures.rs +++ b/lib/codecs/tests/bin/generate-avro-fixtures.rs @@ -142,7 +142,6 @@ fn generate_avro_test_case_string() -> Result<()> { generate_test_case(schema, value, "string") } -#[allow(unused)] fn generate_avro_test_case_fixed() -> Result<()> { let schema = r#" { @@ -280,7 +279,6 @@ fn generate_avro_test_case_record() -> Result<()> { generate_test_case(schema, value, "record") } -#[allow(unused)] fn generate_avro_test_case_date() -> Result<()> { let schema = r#" { @@ -299,6 +297,35 @@ fn generate_avro_test_case_date() -> Result<()> { generate_test_case(schema, value, "date") } +fn generate_avro_test_case_named_record_reference_date() -> Result<()> { + let schema = r#" + { + "type": "record", + "name": "Outer", + "fields": [ + { + "name": "definition", + "type": { + "type": "record", + "name": "Inner", + "fields": [{ + "name": "date", + "type": {"type": "int", "logicalType": "date"} + }] + } + }, + {"name": "reference", "type": "Inner"} + ] + } + "#; + let inner = |date| Value::Record(vec![("date".into(), Value::Date(date))]); + let value = Value::Record(vec![ + ("definition".into(), inner(20_000)), + ("reference".into(), inner(20_001)), + ]); + generate_test_case_from_value(schema, value, "named_record_reference_date") +} + #[allow(unused)] fn generate_avro_test_case_decimal_var() -> Result<()> { let schema = r#" @@ -320,7 +347,6 @@ fn generate_avro_test_case_decimal_var() -> Result<()> { generate_test_case_from_value(schema, record, "decimal_var") } -#[allow(unused)] fn generate_avro_test_case_time_millis() -> Result<()> { let schema = r#" { @@ -441,6 +467,46 @@ fn generate_avro_test_case_local_timestamp_micros() -> Result<()> { generate_test_case(schema, value, "local-timestamp_micros") } +fn generate_avro_test_case_timestamp_nanos() -> Result<()> { + let schema = r#" + { + "type": "record", + "name": "test", + "fields": [ + {"name": "timestamp_nanos_field", "type": "long", "logicalType": "timestamp-nanos"} + ] + } + "#; + #[derive(Debug, Serialize, Deserialize, Clone)] + struct Test { + timestamp_nanos_field: i64, + } + let value = Test { + timestamp_nanos_field: 1697445291056567890i64, + }; + generate_test_case(schema, value, "timestamp_nanos") +} + +fn generate_avro_test_case_local_timestamp_nanos() -> Result<()> { + let schema = r#" + { + "type": "record", + "name": "test", + "fields": [ + {"name": "local_timestamp_nanos_field", "type": "long", "logicalType": "local-timestamp-nanos"} + ] + } + "#; + #[derive(Debug, Serialize, Deserialize, Clone)] + struct Test { + local_timestamp_nanos_field: i64, + } + let value = Test { + local_timestamp_nanos_field: 1697445291056567890i64, + }; + generate_test_case(schema, value, "local-timestamp_nanos") +} + fn generate_avro_test_case_uuid() -> Result<()> { let schema = r#" { @@ -476,7 +542,7 @@ fn generate_test_case_from_value(schema: &str, value: Value, filename: &str) -> let mut schema_file = File::create(format!("{FIXTURES_PATH}/{filename}.avsc"))?; let mut avro_file = File::create(format!("{FIXTURES_PATH}/{filename}.avro"))?; - schema_file.write_all(schema.canonical_form().as_bytes())?; + schema_file.write_all(serde_json::to_string(&schema)?.as_bytes())?; avro_file.write_all(&bytes)?; Ok(()) } @@ -488,8 +554,11 @@ fn main() -> Result<()> { generate_avro_test_case_array()?; generate_avro_test_case_boolean()?; generate_avro_test_case_bytes()?; + generate_avro_test_case_date()?; + generate_avro_test_case_named_record_reference_date()?; generate_avro_test_case_double()?; generate_avro_test_case_enum()?; + generate_avro_test_case_fixed()?; generate_avro_test_case_float()?; generate_avro_test_case_int()?; generate_avro_test_case_long()?; @@ -497,10 +566,13 @@ fn main() -> Result<()> { generate_avro_test_case_record()?; generate_avro_test_case_string()?; generate_avro_test_case_time_micros()?; + generate_avro_test_case_time_millis()?; generate_avro_test_case_timestamp_micros()?; generate_avro_test_case_timestamp_millis()?; + generate_avro_test_case_timestamp_nanos()?; generate_avro_test_case_local_timestamp_micros()?; generate_avro_test_case_local_timestamp_millis()?; + generate_avro_test_case_local_timestamp_nanos()?; generate_avro_test_case_union()?; generate_avro_test_case_uuid()?; Ok(()) diff --git a/lib/codecs/tests/data/avro/generated/array.avsc b/lib/codecs/tests/data/avro/generated/array.avsc index 41f098e5deafe..3ce68e7b38060 100644 --- a/lib/codecs/tests/data/avro/generated/array.avsc +++ b/lib/codecs/tests/data/avro/generated/array.avsc @@ -1 +1 @@ -{"name":"test","type":"record","fields":[{"name":"array_field","type":{"type":"array","items":"string"}}]} \ No newline at end of file +{"type":"record","name":"test","fields":[{"name":"array_field","type":{"type":"array","items":"string"},"items":"string"}]} \ No newline at end of file diff --git a/lib/codecs/tests/data/avro/generated/boolean.avsc b/lib/codecs/tests/data/avro/generated/boolean.avsc index aa04929ca9db4..d0a8839a6a2f1 100644 --- a/lib/codecs/tests/data/avro/generated/boolean.avsc +++ b/lib/codecs/tests/data/avro/generated/boolean.avsc @@ -1 +1 @@ -{"name":"test","type":"record","fields":[{"name":"bool_field","type":"boolean"}]} \ No newline at end of file +{"type":"record","name":"test","fields":[{"name":"bool_field","type":"boolean","default":false}]} \ No newline at end of file diff --git a/lib/codecs/tests/data/avro/generated/bytes.avsc b/lib/codecs/tests/data/avro/generated/bytes.avsc index 2d8d0acefc72a..c34b6ff57321c 100644 --- a/lib/codecs/tests/data/avro/generated/bytes.avsc +++ b/lib/codecs/tests/data/avro/generated/bytes.avsc @@ -1 +1 @@ -{"name":"test","type":"record","fields":[{"name":"bytes_field","type":"bytes"}]} \ No newline at end of file +{"type":"record","name":"test","fields":[{"name":"bytes_field","type":"bytes"}]} \ No newline at end of file diff --git a/lib/codecs/tests/data/avro/generated/date.avro b/lib/codecs/tests/data/avro/generated/date.avro new file mode 100644 index 0000000000000..b067210aeac93 --- /dev/null +++ b/lib/codecs/tests/data/avro/generated/date.avro @@ -0,0 +1 @@ +ü² \ No newline at end of file diff --git a/lib/codecs/tests/data/avro/generated/date.avsc b/lib/codecs/tests/data/avro/generated/date.avsc new file mode 100644 index 0000000000000..c7a70afe9be1a --- /dev/null +++ b/lib/codecs/tests/data/avro/generated/date.avsc @@ -0,0 +1 @@ +{"type":"record","name":"test","fields":[{"name":"date_field","type":{"type":"int","logicalType":"date"}}]} \ No newline at end of file diff --git a/lib/codecs/tests/data/avro/generated/double.avsc b/lib/codecs/tests/data/avro/generated/double.avsc index 60dfa5b2aab17..7efdd059d60b8 100644 --- a/lib/codecs/tests/data/avro/generated/double.avsc +++ b/lib/codecs/tests/data/avro/generated/double.avsc @@ -1 +1 @@ -{"name":"test","type":"record","fields":[{"name":"double_field","type":"double"}]} \ No newline at end of file +{"type":"record","name":"test","fields":[{"name":"double_field","type":"double","default":0}]} \ No newline at end of file diff --git a/lib/codecs/tests/data/avro/generated/enum.avsc b/lib/codecs/tests/data/avro/generated/enum.avsc index 5d7468754da98..59d5d0e34dad2 100644 --- a/lib/codecs/tests/data/avro/generated/enum.avsc +++ b/lib/codecs/tests/data/avro/generated/enum.avsc @@ -1 +1 @@ -{"name":"test","type":"record","fields":[{"name":"enum_field","type":{"name":"enum_field","type":"enum","symbols":["Spades","Hearts","Diamonds","Clubs"]}}]} \ No newline at end of file +{"type":"record","name":"test","fields":[{"name":"enum_field","type":{"type":"enum","name":"enum_field","symbols":["Spades","Hearts","Diamonds","Clubs"]}}]} \ No newline at end of file diff --git a/lib/codecs/tests/data/avro/generated/fixed.avro b/lib/codecs/tests/data/avro/generated/fixed.avro new file mode 100644 index 0000000000000..50fd96c66abba --- /dev/null +++ b/lib/codecs/tests/data/avro/generated/fixed.avro @@ -0,0 +1 @@ +1019181716151413 \ No newline at end of file diff --git a/lib/codecs/tests/data/avro/generated/fixed.avsc b/lib/codecs/tests/data/avro/generated/fixed.avsc new file mode 100644 index 0000000000000..ee03066a96081 --- /dev/null +++ b/lib/codecs/tests/data/avro/generated/fixed.avsc @@ -0,0 +1 @@ +{"type":"record","name":"test","fields":[{"name":"fixed_field","type":{"type":"fixed","name":"fixed_field","size":16}}]} \ No newline at end of file diff --git a/lib/codecs/tests/data/avro/generated/float.avsc b/lib/codecs/tests/data/avro/generated/float.avsc index 9a7f836ddfe0d..aa0d287e4dfc3 100644 --- a/lib/codecs/tests/data/avro/generated/float.avsc +++ b/lib/codecs/tests/data/avro/generated/float.avsc @@ -1 +1 @@ -{"name":"test","type":"record","fields":[{"name":"float_field","type":"float"}]} \ No newline at end of file +{"type":"record","name":"test","fields":[{"name":"float_field","type":"float","default":0}]} \ No newline at end of file diff --git a/lib/codecs/tests/data/avro/generated/int.avsc b/lib/codecs/tests/data/avro/generated/int.avsc index af009f13394f2..134feda0ea323 100644 --- a/lib/codecs/tests/data/avro/generated/int.avsc +++ b/lib/codecs/tests/data/avro/generated/int.avsc @@ -1 +1 @@ -{"name":"test","type":"record","fields":[{"name":"int_field","type":"int"}]} \ No newline at end of file +{"type":"record","name":"test","fields":[{"name":"int_field","type":"int","default":0}]} \ No newline at end of file diff --git a/lib/codecs/tests/data/avro/generated/local-timestamp_micros.avsc b/lib/codecs/tests/data/avro/generated/local-timestamp_micros.avsc index 35d5441f13078..01d0dcf5eca96 100644 --- a/lib/codecs/tests/data/avro/generated/local-timestamp_micros.avsc +++ b/lib/codecs/tests/data/avro/generated/local-timestamp_micros.avsc @@ -1 +1 @@ -{"name":"test","type":"record","fields":[{"name":"local_timestamp_micros_field","type":{"type":"long","logicalType":"local-timestamp-micros"}}]} \ No newline at end of file +{"type":"record","name":"test","fields":[{"name":"local_timestamp_micros_field","type":{"type":"long","logicalType":"local-timestamp-micros"}}]} \ No newline at end of file diff --git a/lib/codecs/tests/data/avro/generated/local-timestamp_millis.avsc b/lib/codecs/tests/data/avro/generated/local-timestamp_millis.avsc index 51ec12c1e477e..39722937a5d13 100644 --- a/lib/codecs/tests/data/avro/generated/local-timestamp_millis.avsc +++ b/lib/codecs/tests/data/avro/generated/local-timestamp_millis.avsc @@ -1 +1 @@ -{"name":"test","type":"record","fields":[{"name":"local_timestamp_millis_field","type":{"type":"long","logicalType":"local-timestamp-millis"}}]} \ No newline at end of file +{"type":"record","name":"test","fields":[{"name":"local_timestamp_millis_field","type":{"type":"long","logicalType":"local-timestamp-millis"}}]} \ No newline at end of file diff --git a/lib/codecs/tests/data/avro/generated/local-timestamp_nanos.avro b/lib/codecs/tests/data/avro/generated/local-timestamp_nanos.avro new file mode 100644 index 0000000000000..bb475c1f66117 --- /dev/null +++ b/lib/codecs/tests/data/avro/generated/local-timestamp_nanos.avro @@ -0,0 +1 @@ +¤Ù°ñõßÄŽ/ \ No newline at end of file diff --git a/lib/codecs/tests/data/avro/generated/local-timestamp_nanos.avsc b/lib/codecs/tests/data/avro/generated/local-timestamp_nanos.avsc new file mode 100644 index 0000000000000..72fc1dc5ea873 --- /dev/null +++ b/lib/codecs/tests/data/avro/generated/local-timestamp_nanos.avsc @@ -0,0 +1 @@ +{"type":"record","name":"test","fields":[{"name":"local_timestamp_nanos_field","type":{"type":"long","logicalType":"local-timestamp-nanos"}}]} \ No newline at end of file diff --git a/lib/codecs/tests/data/avro/generated/long.avsc b/lib/codecs/tests/data/avro/generated/long.avsc index e4a052e4eacef..4976e3d40a8fb 100644 --- a/lib/codecs/tests/data/avro/generated/long.avsc +++ b/lib/codecs/tests/data/avro/generated/long.avsc @@ -1 +1 @@ -{"name":"test","type":"record","fields":[{"name":"long_field","type":"long"}]} \ No newline at end of file +{"type":"record","name":"test","fields":[{"name":"long_field","type":"long","default":0}]} \ No newline at end of file diff --git a/lib/codecs/tests/data/avro/generated/map.avsc b/lib/codecs/tests/data/avro/generated/map.avsc index cc3e2ce9003dd..69441d98fa538 100644 --- a/lib/codecs/tests/data/avro/generated/map.avsc +++ b/lib/codecs/tests/data/avro/generated/map.avsc @@ -1 +1 @@ -{"name":"test","type":"record","fields":[{"name":"map_field","type":{"type":"map","values":"long"}}]} \ No newline at end of file +{"type":"record","name":"test","fields":[{"name":"map_field","type":{"type":"map","values":"long","default":{}},"default":{},"values":"long"}]} \ No newline at end of file diff --git a/lib/codecs/tests/data/avro/generated/named_record_reference_date.avro b/lib/codecs/tests/data/avro/generated/named_record_reference_date.avro new file mode 100644 index 0000000000000..0fab28d24933d --- /dev/null +++ b/lib/codecs/tests/data/avro/generated/named_record_reference_date.avro @@ -0,0 +1 @@ +À¸¸ \ No newline at end of file diff --git a/lib/codecs/tests/data/avro/generated/named_record_reference_date.avsc b/lib/codecs/tests/data/avro/generated/named_record_reference_date.avsc new file mode 100644 index 0000000000000..52826b675e3bd --- /dev/null +++ b/lib/codecs/tests/data/avro/generated/named_record_reference_date.avsc @@ -0,0 +1 @@ +{"type":"record","name":"Outer","fields":[{"name":"definition","type":{"type":"record","name":"Inner","fields":[{"name":"date","type":{"type":"int","logicalType":"date"}}]}},{"name":"reference","type":"Inner"}]} \ No newline at end of file diff --git a/lib/codecs/tests/data/avro/generated/record.avsc b/lib/codecs/tests/data/avro/generated/record.avsc index 04632d003a183..e644a5f586fe9 100644 --- a/lib/codecs/tests/data/avro/generated/record.avsc +++ b/lib/codecs/tests/data/avro/generated/record.avsc @@ -1 +1 @@ -{"name":"test","type":"record","fields":[{"name":"name","type":"string"},{"name":"age","type":"int"}]} \ No newline at end of file +{"type":"record","name":"test","fields":[{"name":"name","type":"string"},{"name":"age","type":"int"}]} \ No newline at end of file diff --git a/lib/codecs/tests/data/avro/generated/string.avsc b/lib/codecs/tests/data/avro/generated/string.avsc index b6efaad1e7e11..d26a0c1f81e07 100644 --- a/lib/codecs/tests/data/avro/generated/string.avsc +++ b/lib/codecs/tests/data/avro/generated/string.avsc @@ -1 +1 @@ -{"name":"test","type":"record","fields":[{"name":"string_field","type":"string"}]} \ No newline at end of file +{"type":"record","name":"test","fields":[{"name":"string_field","type":"string"}]} \ No newline at end of file diff --git a/lib/codecs/tests/data/avro/generated/time_micros.avsc b/lib/codecs/tests/data/avro/generated/time_micros.avsc index 6624415706d0e..455d3e9cd2ada 100644 --- a/lib/codecs/tests/data/avro/generated/time_micros.avsc +++ b/lib/codecs/tests/data/avro/generated/time_micros.avsc @@ -1 +1 @@ -{"name":"test","type":"record","fields":[{"name":"time_micros_field","type":{"type":"long","logicalType":"time-micros"}}]} \ No newline at end of file +{"type":"record","name":"test","fields":[{"name":"time_micros_field","type":{"type":"long","logicalType":"time-micros"}}]} \ No newline at end of file diff --git a/lib/codecs/tests/data/avro/generated/time_millis.avro b/lib/codecs/tests/data/avro/generated/time_millis.avro new file mode 100644 index 0000000000000..c1aee88444369 --- /dev/null +++ b/lib/codecs/tests/data/avro/generated/time_millis.avro @@ -0,0 +1 @@ +¶¡†9 \ No newline at end of file diff --git a/lib/codecs/tests/data/avro/generated/time_millis.avsc b/lib/codecs/tests/data/avro/generated/time_millis.avsc new file mode 100644 index 0000000000000..9a281db2c6e99 --- /dev/null +++ b/lib/codecs/tests/data/avro/generated/time_millis.avsc @@ -0,0 +1 @@ +{"type":"record","name":"test","fields":[{"name":"time_millis_field","type":{"type":"int","logicalType":"time-millis"}}]} \ No newline at end of file diff --git a/lib/codecs/tests/data/avro/generated/timestamp_micros.avsc b/lib/codecs/tests/data/avro/generated/timestamp_micros.avsc index b466968145c9f..d51fdda84588b 100644 --- a/lib/codecs/tests/data/avro/generated/timestamp_micros.avsc +++ b/lib/codecs/tests/data/avro/generated/timestamp_micros.avsc @@ -1 +1 @@ -{"name":"test","type":"record","fields":[{"name":"timestamp_micros_field","type":{"type":"long","logicalType":"timestamp-micros"}}]} \ No newline at end of file +{"type":"record","name":"test","fields":[{"name":"timestamp_micros_field","type":{"type":"long","logicalType":"timestamp-micros"}}]} \ No newline at end of file diff --git a/lib/codecs/tests/data/avro/generated/timestamp_millis.avsc b/lib/codecs/tests/data/avro/generated/timestamp_millis.avsc index eea96da274baf..5a42c53182c7d 100644 --- a/lib/codecs/tests/data/avro/generated/timestamp_millis.avsc +++ b/lib/codecs/tests/data/avro/generated/timestamp_millis.avsc @@ -1 +1 @@ -{"name":"test","type":"record","fields":[{"name":"timestamp_millis_field","type":{"type":"long","logicalType":"timestamp-millis"}}]} \ No newline at end of file +{"type":"record","name":"test","fields":[{"name":"timestamp_millis_field","type":{"type":"long","logicalType":"timestamp-millis"}}]} \ No newline at end of file diff --git a/lib/codecs/tests/data/avro/generated/timestamp_nanos.avro b/lib/codecs/tests/data/avro/generated/timestamp_nanos.avro new file mode 100644 index 0000000000000..bb475c1f66117 --- /dev/null +++ b/lib/codecs/tests/data/avro/generated/timestamp_nanos.avro @@ -0,0 +1 @@ +¤Ù°ñõßÄŽ/ \ No newline at end of file diff --git a/lib/codecs/tests/data/avro/generated/timestamp_nanos.avsc b/lib/codecs/tests/data/avro/generated/timestamp_nanos.avsc new file mode 100644 index 0000000000000..e03634505d251 --- /dev/null +++ b/lib/codecs/tests/data/avro/generated/timestamp_nanos.avsc @@ -0,0 +1 @@ +{"type":"record","name":"test","fields":[{"name":"timestamp_nanos_field","type":{"type":"long","logicalType":"timestamp-nanos"}}]} \ No newline at end of file diff --git a/lib/codecs/tests/data/avro/generated/union.avsc b/lib/codecs/tests/data/avro/generated/union.avsc index b67afd5112a6b..bd31d552c42f2 100644 --- a/lib/codecs/tests/data/avro/generated/union.avsc +++ b/lib/codecs/tests/data/avro/generated/union.avsc @@ -1 +1 @@ -{"name":"test","type":"record","fields":[{"name":"union_field","type":["string","int"]}]} \ No newline at end of file +{"type":"record","name":"test","fields":[{"name":"union_field","type":["string","int"]}]} \ No newline at end of file diff --git a/lib/codecs/tests/data/avro/generated/uuid.avsc b/lib/codecs/tests/data/avro/generated/uuid.avsc index ca1b0bf400de1..d20f63c4d503a 100644 --- a/lib/codecs/tests/data/avro/generated/uuid.avsc +++ b/lib/codecs/tests/data/avro/generated/uuid.avsc @@ -1 +1 @@ -{"name":"test","type":"record","fields":[{"name":"uuid_field","type":{"type":"string","logicalType":"uuid"}}]} \ No newline at end of file +{"type":"record","name":"test","fields":[{"name":"uuid_field","type":{"type":"string","logicalType":"uuid"}}]} \ No newline at end of file diff --git a/website/cue/reference/components/sinks/generated/websocket_server.cue b/website/cue/reference/components/sinks/generated/websocket_server.cue index 586b2bc4f4383..cd08af2e36fac 100644 --- a/website/cue/reference/components/sinks/generated/websocket_server.cue +++ b/website/cue/reference/components/sinks/generated/websocket_server.cue @@ -594,11 +594,8 @@ generated: components: sinks: websocket_server: configuration: { description: """ The Avro schema definition. **Note**: The following [`apache_avro::types::Value`] variants are *not* supported: - * `Date` * `Decimal` * `Duration` - * `Fixed` - * `TimeMillis` """ required: true type: string: examples: ["{ \"type\": \"record\", \"name\": \"log\", \"fields\": [{ \"name\": \"message\", \"type\": \"string\" }] }"] diff --git a/website/cue/reference/components/sources/generated/amqp.cue b/website/cue/reference/components/sources/generated/amqp.cue index 1108e0eef13ab..f76bb291329fc 100644 --- a/website/cue/reference/components/sources/generated/amqp.cue +++ b/website/cue/reference/components/sources/generated/amqp.cue @@ -62,11 +62,8 @@ generated: components: sources: amqp: configuration: { description: """ The Avro schema definition. **Note**: The following [`apache_avro::types::Value`] variants are *not* supported: - * `Date` * `Decimal` * `Duration` - * `Fixed` - * `TimeMillis` """ required: true type: string: examples: ["{ \"type\": \"record\", \"name\": \"log\", \"fields\": [{ \"name\": \"message\", \"type\": \"string\" }] }"] diff --git a/website/cue/reference/components/sources/generated/aws_kinesis_firehose.cue b/website/cue/reference/components/sources/generated/aws_kinesis_firehose.cue index d8d6fa2806e1f..e96ecbe7be460 100644 --- a/website/cue/reference/components/sources/generated/aws_kinesis_firehose.cue +++ b/website/cue/reference/components/sources/generated/aws_kinesis_firehose.cue @@ -82,11 +82,8 @@ generated: components: sources: aws_kinesis_firehose: configuration: { description: """ The Avro schema definition. **Note**: The following [`apache_avro::types::Value`] variants are *not* supported: - * `Date` * `Decimal` * `Duration` - * `Fixed` - * `TimeMillis` """ required: true type: string: examples: ["{ \"type\": \"record\", \"name\": \"log\", \"fields\": [{ \"name\": \"message\", \"type\": \"string\" }] }"] diff --git a/website/cue/reference/components/sources/generated/aws_s3.cue b/website/cue/reference/components/sources/generated/aws_s3.cue index 7909847e25921..d1ae1aeb650ae 100644 --- a/website/cue/reference/components/sources/generated/aws_s3.cue +++ b/website/cue/reference/components/sources/generated/aws_s3.cue @@ -180,11 +180,8 @@ generated: components: sources: aws_s3: configuration: { description: """ The Avro schema definition. **Note**: The following [`apache_avro::types::Value`] variants are *not* supported: - * `Date` * `Decimal` * `Duration` - * `Fixed` - * `TimeMillis` """ required: true type: string: examples: ["{ \"type\": \"record\", \"name\": \"log\", \"fields\": [{ \"name\": \"message\", \"type\": \"string\" }] }"] diff --git a/website/cue/reference/components/sources/generated/aws_sqs.cue b/website/cue/reference/components/sources/generated/aws_sqs.cue index 5d350cac9a901..d9d1de9b62f0c 100644 --- a/website/cue/reference/components/sources/generated/aws_sqs.cue +++ b/website/cue/reference/components/sources/generated/aws_sqs.cue @@ -175,11 +175,8 @@ generated: components: sources: aws_sqs: configuration: { description: """ The Avro schema definition. **Note**: The following [`apache_avro::types::Value`] variants are *not* supported: - * `Date` * `Decimal` * `Duration` - * `Fixed` - * `TimeMillis` """ required: true type: string: examples: ["{ \"type\": \"record\", \"name\": \"log\", \"fields\": [{ \"name\": \"message\", \"type\": \"string\" }] }"] diff --git a/website/cue/reference/components/sources/generated/datadog_agent.cue b/website/cue/reference/components/sources/generated/datadog_agent.cue index f9eb4fded5e14..1e376589b4be0 100644 --- a/website/cue/reference/components/sources/generated/datadog_agent.cue +++ b/website/cue/reference/components/sources/generated/datadog_agent.cue @@ -47,11 +47,8 @@ generated: components: sources: datadog_agent: configuration: { description: """ The Avro schema definition. **Note**: The following [`apache_avro::types::Value`] variants are *not* supported: - * `Date` * `Decimal` * `Duration` - * `Fixed` - * `TimeMillis` """ required: true type: string: examples: ["{ \"type\": \"record\", \"name\": \"log\", \"fields\": [{ \"name\": \"message\", \"type\": \"string\" }] }"] diff --git a/website/cue/reference/components/sources/generated/demo_logs.cue b/website/cue/reference/components/sources/generated/demo_logs.cue index cc4dca331b68b..257dd839c1888 100644 --- a/website/cue/reference/components/sources/generated/demo_logs.cue +++ b/website/cue/reference/components/sources/generated/demo_logs.cue @@ -26,11 +26,8 @@ generated: components: sources: demo_logs: configuration: { description: """ The Avro schema definition. **Note**: The following [`apache_avro::types::Value`] variants are *not* supported: - * `Date` * `Decimal` * `Duration` - * `Fixed` - * `TimeMillis` """ required: true type: string: examples: ["{ \"type\": \"record\", \"name\": \"log\", \"fields\": [{ \"name\": \"message\", \"type\": \"string\" }] }"] diff --git a/website/cue/reference/components/sources/generated/exec.cue b/website/cue/reference/components/sources/generated/exec.cue index b72470346e5dd..14edb358885f8 100644 --- a/website/cue/reference/components/sources/generated/exec.cue +++ b/website/cue/reference/components/sources/generated/exec.cue @@ -27,11 +27,8 @@ generated: components: sources: exec: configuration: { description: """ The Avro schema definition. **Note**: The following [`apache_avro::types::Value`] variants are *not* supported: - * `Date` * `Decimal` * `Duration` - * `Fixed` - * `TimeMillis` """ required: true type: string: examples: ["{ \"type\": \"record\", \"name\": \"log\", \"fields\": [{ \"name\": \"message\", \"type\": \"string\" }] }"] diff --git a/website/cue/reference/components/sources/generated/file_descriptor.cue b/website/cue/reference/components/sources/generated/file_descriptor.cue index daa12cce7cea7..594f9ccf50ed9 100644 --- a/website/cue/reference/components/sources/generated/file_descriptor.cue +++ b/website/cue/reference/components/sources/generated/file_descriptor.cue @@ -17,11 +17,8 @@ generated: components: sources: file_descriptor: configuration: { description: """ The Avro schema definition. **Note**: The following [`apache_avro::types::Value`] variants are *not* supported: - * `Date` * `Decimal` * `Duration` - * `Fixed` - * `TimeMillis` """ required: true type: string: examples: ["{ \"type\": \"record\", \"name\": \"log\", \"fields\": [{ \"name\": \"message\", \"type\": \"string\" }] }"] diff --git a/website/cue/reference/components/sources/generated/gcp_pubsub.cue b/website/cue/reference/components/sources/generated/gcp_pubsub.cue index af645bf7384b3..fd9651c27ba2d 100644 --- a/website/cue/reference/components/sources/generated/gcp_pubsub.cue +++ b/website/cue/reference/components/sources/generated/gcp_pubsub.cue @@ -93,11 +93,8 @@ generated: components: sources: gcp_pubsub: configuration: { description: """ The Avro schema definition. **Note**: The following [`apache_avro::types::Value`] variants are *not* supported: - * `Date` * `Decimal` * `Duration` - * `Fixed` - * `TimeMillis` """ required: true type: string: examples: ["{ \"type\": \"record\", \"name\": \"log\", \"fields\": [{ \"name\": \"message\", \"type\": \"string\" }] }"] diff --git a/website/cue/reference/components/sources/generated/heroku_logs.cue b/website/cue/reference/components/sources/generated/heroku_logs.cue index 2eb2141d26444..161edaa2e4095 100644 --- a/website/cue/reference/components/sources/generated/heroku_logs.cue +++ b/website/cue/reference/components/sources/generated/heroku_logs.cue @@ -90,11 +90,8 @@ generated: components: sources: heroku_logs: configuration: { description: """ The Avro schema definition. **Note**: The following [`apache_avro::types::Value`] variants are *not* supported: - * `Date` * `Decimal` * `Duration` - * `Fixed` - * `TimeMillis` """ required: true type: string: examples: ["{ \"type\": \"record\", \"name\": \"log\", \"fields\": [{ \"name\": \"message\", \"type\": \"string\" }] }"] diff --git a/website/cue/reference/components/sources/generated/http.cue b/website/cue/reference/components/sources/generated/http.cue index 9024dcde6d039..70b87500a84c0 100644 --- a/website/cue/reference/components/sources/generated/http.cue +++ b/website/cue/reference/components/sources/generated/http.cue @@ -98,11 +98,8 @@ generated: components: sources: http: configuration: { description: """ The Avro schema definition. **Note**: The following [`apache_avro::types::Value`] variants are *not* supported: - * `Date` * `Decimal` * `Duration` - * `Fixed` - * `TimeMillis` """ required: true type: string: examples: ["{ \"type\": \"record\", \"name\": \"log\", \"fields\": [{ \"name\": \"message\", \"type\": \"string\" }] }"] diff --git a/website/cue/reference/components/sources/generated/http_client.cue b/website/cue/reference/components/sources/generated/http_client.cue index 527a7b7eae9c0..e163ce952ee90 100644 --- a/website/cue/reference/components/sources/generated/http_client.cue +++ b/website/cue/reference/components/sources/generated/http_client.cue @@ -228,11 +228,8 @@ generated: components: sources: http_client: configuration: { description: """ The Avro schema definition. **Note**: The following [`apache_avro::types::Value`] variants are *not* supported: - * `Date` * `Decimal` * `Duration` - * `Fixed` - * `TimeMillis` """ required: true type: string: examples: ["{ \"type\": \"record\", \"name\": \"log\", \"fields\": [{ \"name\": \"message\", \"type\": \"string\" }] }"] diff --git a/website/cue/reference/components/sources/generated/http_server.cue b/website/cue/reference/components/sources/generated/http_server.cue index 9f2fd3b59393f..7d602b46dd972 100644 --- a/website/cue/reference/components/sources/generated/http_server.cue +++ b/website/cue/reference/components/sources/generated/http_server.cue @@ -98,11 +98,8 @@ generated: components: sources: http_server: configuration: { description: """ The Avro schema definition. **Note**: The following [`apache_avro::types::Value`] variants are *not* supported: - * `Date` * `Decimal` * `Duration` - * `Fixed` - * `TimeMillis` """ required: true type: string: examples: ["{ \"type\": \"record\", \"name\": \"log\", \"fields\": [{ \"name\": \"message\", \"type\": \"string\" }] }"] diff --git a/website/cue/reference/components/sources/generated/kafka.cue b/website/cue/reference/components/sources/generated/kafka.cue index 0979aa41c30a0..c19941a7d8dbe 100644 --- a/website/cue/reference/components/sources/generated/kafka.cue +++ b/website/cue/reference/components/sources/generated/kafka.cue @@ -71,11 +71,8 @@ generated: components: sources: kafka: configuration: { description: """ The Avro schema definition. **Note**: The following [`apache_avro::types::Value`] variants are *not* supported: - * `Date` * `Decimal` * `Duration` - * `Fixed` - * `TimeMillis` """ required: true type: string: examples: ["{ \"type\": \"record\", \"name\": \"log\", \"fields\": [{ \"name\": \"message\", \"type\": \"string\" }] }"] diff --git a/website/cue/reference/components/sources/generated/mqtt.cue b/website/cue/reference/components/sources/generated/mqtt.cue index 4a699a4e6951a..d011d3b963d42 100644 --- a/website/cue/reference/components/sources/generated/mqtt.cue +++ b/website/cue/reference/components/sources/generated/mqtt.cue @@ -22,11 +22,8 @@ generated: components: sources: mqtt: configuration: { description: """ The Avro schema definition. **Note**: The following [`apache_avro::types::Value`] variants are *not* supported: - * `Date` * `Decimal` * `Duration` - * `Fixed` - * `TimeMillis` """ required: true type: string: examples: ["{ \"type\": \"record\", \"name\": \"log\", \"fields\": [{ \"name\": \"message\", \"type\": \"string\" }] }"] diff --git a/website/cue/reference/components/sources/generated/nats.cue b/website/cue/reference/components/sources/generated/nats.cue index bf29e808bdf80..6be275885c20a 100644 --- a/website/cue/reference/components/sources/generated/nats.cue +++ b/website/cue/reference/components/sources/generated/nats.cue @@ -114,11 +114,8 @@ generated: components: sources: nats: configuration: { description: """ The Avro schema definition. **Note**: The following [`apache_avro::types::Value`] variants are *not* supported: - * `Date` * `Decimal` * `Duration` - * `Fixed` - * `TimeMillis` """ required: true type: string: examples: ["{ \"type\": \"record\", \"name\": \"log\", \"fields\": [{ \"name\": \"message\", \"type\": \"string\" }] }"] diff --git a/website/cue/reference/components/sources/generated/pulsar.cue b/website/cue/reference/components/sources/generated/pulsar.cue index a4f831bd62191..821dc7836f473 100644 --- a/website/cue/reference/components/sources/generated/pulsar.cue +++ b/website/cue/reference/components/sources/generated/pulsar.cue @@ -120,11 +120,8 @@ generated: components: sources: pulsar: configuration: { description: """ The Avro schema definition. **Note**: The following [`apache_avro::types::Value`] variants are *not* supported: - * `Date` * `Decimal` * `Duration` - * `Fixed` - * `TimeMillis` """ required: true type: string: examples: ["{ \"type\": \"record\", \"name\": \"log\", \"fields\": [{ \"name\": \"message\", \"type\": \"string\" }] }"] diff --git a/website/cue/reference/components/sources/generated/redis.cue b/website/cue/reference/components/sources/generated/redis.cue index a37029b9d5893..d9783bc963a8e 100644 --- a/website/cue/reference/components/sources/generated/redis.cue +++ b/website/cue/reference/components/sources/generated/redis.cue @@ -32,11 +32,8 @@ generated: components: sources: redis: configuration: { description: """ The Avro schema definition. **Note**: The following [`apache_avro::types::Value`] variants are *not* supported: - * `Date` * `Decimal` * `Duration` - * `Fixed` - * `TimeMillis` """ required: true type: string: examples: ["{ \"type\": \"record\", \"name\": \"log\", \"fields\": [{ \"name\": \"message\", \"type\": \"string\" }] }"] diff --git a/website/cue/reference/components/sources/generated/socket.cue b/website/cue/reference/components/sources/generated/socket.cue index b0b399c3ae2d0..3768bb33cd460 100644 --- a/website/cue/reference/components/sources/generated/socket.cue +++ b/website/cue/reference/components/sources/generated/socket.cue @@ -34,11 +34,8 @@ generated: components: sources: socket: configuration: { description: """ The Avro schema definition. **Note**: The following [`apache_avro::types::Value`] variants are *not* supported: - * `Date` * `Decimal` * `Duration` - * `Fixed` - * `TimeMillis` """ required: true type: string: examples: ["{ \"type\": \"record\", \"name\": \"log\", \"fields\": [{ \"name\": \"message\", \"type\": \"string\" }] }"] diff --git a/website/cue/reference/components/sources/generated/stdin.cue b/website/cue/reference/components/sources/generated/stdin.cue index 3eef2fc198037..0a8c4a60c549e 100644 --- a/website/cue/reference/components/sources/generated/stdin.cue +++ b/website/cue/reference/components/sources/generated/stdin.cue @@ -17,11 +17,8 @@ generated: components: sources: stdin: configuration: { description: """ The Avro schema definition. **Note**: The following [`apache_avro::types::Value`] variants are *not* supported: - * `Date` * `Decimal` * `Duration` - * `Fixed` - * `TimeMillis` """ required: true type: string: examples: ["{ \"type\": \"record\", \"name\": \"log\", \"fields\": [{ \"name\": \"message\", \"type\": \"string\" }] }"] diff --git a/website/cue/reference/components/sources/generated/websocket.cue b/website/cue/reference/components/sources/generated/websocket.cue index bce2e24609cfb..c1d715625b7be 100644 --- a/website/cue/reference/components/sources/generated/websocket.cue +++ b/website/cue/reference/components/sources/generated/websocket.cue @@ -204,11 +204,8 @@ generated: components: sources: websocket: configuration: { description: """ The Avro schema definition. **Note**: The following [`apache_avro::types::Value`] variants are *not* supported: - * `Date` * `Decimal` * `Duration` - * `Fixed` - * `TimeMillis` """ required: true type: string: examples: ["{ \"type\": \"record\", \"name\": \"log\", \"fields\": [{ \"name\": \"message\", \"type\": \"string\" }] }"]