avro-patches 0.3.0 → 0.3.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/CHANGELOG.md +3 -0
- data/README.md +1 -0
- data/lib/avro-patches/logical_types/schema.rb +4 -6
- data/lib/avro-patches/schema_validator.rb +1 -0
- data/lib/avro-patches/schema_validator/io.rb +27 -0
- data/lib/avro-patches/version.rb +1 -1
- metadata +3 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 676a9d9b3febd0bdde356e8215466ec4605ffc4b
|
4
|
+
data.tar.gz: 4623aad3b6d0c7c7e50e4eedf86e3bdabf5c5b70
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: cd158af3a8f6912e003a01785700bec22525dfbbc39711f8a545afda49871080f97d6df54b6bf622dcf586eb78fb9316144d42c4f74c9714fe387efa00a6197f
|
7
|
+
data.tar.gz: 1d9cc525627b20fc67e860edd4d152f6e644f35b210dd12d703f1a088bec17ef8ea399dc4420489cc0224d2ad711901fc36993c7e5685715795bc2c192418ccc
|
data/CHANGELOG.md
CHANGED
data/README.md
CHANGED
@@ -10,6 +10,7 @@ The following pending or unreleased changes are included:
|
|
10
10
|
- [AVRO-1886: Add validation messages](https://github.com/apache/avro/pull/111)
|
11
11
|
- [AVRO-1695: Ruby support for logical types revisited](https://github.com/apache/avro/pull/116)
|
12
12
|
- [AVRO-1969: Add schema compatibility checker for Ruby](https://github.com/apache/avro/pull/170)
|
13
|
+
- [AVRO-2039: Ruby encoding performance improvements](https://github.com/apache/avro/pull/230)
|
13
14
|
|
14
15
|
In addition, compatibility with Ruby 2.4 (https://github.com/apache/avro/pull/191)
|
15
16
|
has been integrated with the changes above.
|
@@ -6,12 +6,12 @@ Avro::Schema.class_eval do
|
|
6
6
|
if json_obj.is_a? Hash
|
7
7
|
type = json_obj['type']
|
8
8
|
logical_type = json_obj['logicalType']
|
9
|
-
raise Avro::
|
9
|
+
raise Avro::SchemaParseError, %Q(No "type" property: #{json_obj}) if type.nil?
|
10
10
|
|
11
11
|
# Check that the type is valid before calling #to_sym, since symbols are never garbage
|
12
12
|
# collected (important to avoid DoS if we're accepting schemas from untrusted clients)
|
13
13
|
unless Avro::Schema::VALID_TYPES.include?(type)
|
14
|
-
raise Avro::
|
14
|
+
raise Avro::SchemaParseError, "Unknown type: #{type}"
|
15
15
|
end
|
16
16
|
|
17
17
|
type_sym = type.to_sym
|
@@ -31,8 +31,6 @@ Avro::Schema.class_eval do
|
|
31
31
|
when :record, :error
|
32
32
|
fields = json_obj['fields']
|
33
33
|
return Avro::Schema::RecordSchema.new(name, namespace, fields, names, type_sym)
|
34
|
-
else
|
35
|
-
raise Avro::Schema::SchemaParseError.new("Unknown named type: #{type}")
|
36
34
|
end
|
37
35
|
|
38
36
|
else
|
@@ -42,7 +40,7 @@ Avro::Schema.class_eval do
|
|
42
40
|
when :map
|
43
41
|
return Avro::Schema::MapSchema.new(json_obj['values'], names, default_namespace)
|
44
42
|
else
|
45
|
-
raise Avro::
|
43
|
+
raise Avro::SchemaParseError.new("Unknown Valid Type: #{type}")
|
46
44
|
end
|
47
45
|
end
|
48
46
|
|
@@ -52,7 +50,7 @@ Avro::Schema.class_eval do
|
|
52
50
|
elsif Avro::Schema::PRIMITIVE_TYPES.include? json_obj
|
53
51
|
return Avro::Schema::PrimitiveSchema.new(json_obj)
|
54
52
|
else
|
55
|
-
raise Avro::
|
53
|
+
raise Avro::UnknownSchemaError.new(json_obj)
|
56
54
|
end
|
57
55
|
end
|
58
56
|
|
@@ -0,0 +1,27 @@
|
|
1
|
+
Avro::IO::DatumWriter.class_eval do
|
2
|
+
def write_data(writers_schema, datum, encoder)
|
3
|
+
unless Avro::Schema.validate(writers_schema, datum, recursive: false)
|
4
|
+
raise Avro::IO::AvroTypeError.new(writers_schema, datum)
|
5
|
+
end
|
6
|
+
|
7
|
+
# function dispatch to write datum
|
8
|
+
case writers_schema.type_sym
|
9
|
+
when :null; encoder.write_null(datum)
|
10
|
+
when :boolean; encoder.write_boolean(datum)
|
11
|
+
when :string; encoder.write_string(datum)
|
12
|
+
when :int; encoder.write_int(datum)
|
13
|
+
when :long; encoder.write_long(datum)
|
14
|
+
when :float; encoder.write_float(datum)
|
15
|
+
when :double; encoder.write_double(datum)
|
16
|
+
when :bytes; encoder.write_bytes(datum)
|
17
|
+
when :fixed; write_fixed(writers_schema, datum, encoder)
|
18
|
+
when :enum; write_enum(writers_schema, datum, encoder)
|
19
|
+
when :array; write_array(writers_schema, datum, encoder)
|
20
|
+
when :map; write_map(writers_schema, datum, encoder)
|
21
|
+
when :union; write_union(writers_schema, datum, encoder)
|
22
|
+
when :record, :error, :request; write_record(writers_schema, datum, encoder)
|
23
|
+
else
|
24
|
+
raise Avro::AvroError.new("Unknown type: #{writers_schema.type}")
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
data/lib/avro-patches/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: avro-patches
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.3.
|
4
|
+
version: 0.3.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Salsify, Inc
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2017-
|
11
|
+
date: 2017-07-12 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -114,6 +114,7 @@ files:
|
|
114
114
|
- lib/avro-patches/schema_compatibility/schema.rb
|
115
115
|
- lib/avro-patches/schema_compatibility/schema_compatibility.rb
|
116
116
|
- lib/avro-patches/schema_validator.rb
|
117
|
+
- lib/avro-patches/schema_validator/io.rb
|
117
118
|
- lib/avro-patches/schema_validator/schema.rb
|
118
119
|
- lib/avro-patches/schema_validator/schema_validator.rb
|
119
120
|
- lib/avro-patches/version.rb
|