Details
-
Bug
-
Status: Open
-
Major
-
Resolution: Unresolved
-
1.7.7
-
None
Description
If you reference a named type in a record, but the named type doesn't have the same namespace as the record (or doesn't have a namespace, while the record does), Python-Avro fails to recognize the named type. Here are five Python scripts that illustrate the problem:
import avro.schema
names = avro.schema.Names()
avro.schema.make_avsc_object(
, names)
avro.schema.make_avsc_object({"type": "record", "name": "There", "fields": [
]}, names)
- works
import avro.schema
names = avro.schema.Names()
avro.schema.make_avsc_object(
, names)
avro.schema.make_avsc_object({"type": "record", "name": "There", "namespace": "com.wowie", "fields": [
]}, names)
- doesn't work
import avro.schema
names = avro.schema.Names()
avro.schema.make_avsc_object(
, names)
avro.schema.make_avsc_object({"type": "record", "name": "There", "namespace": "com.wowie", "fields": [
]}, names)
- works
import avro.schema
names = avro.schema.Names()
avro.schema.make_avsc_object(
, names)
avro.schema.make_avsc_object({"type": "record", "name": "There", "namespace": "com.wowie", "fields": [
]}, names)
- works
import avro.schema
names = avro.schema.Names()
avro.schema.make_avsc_object(
, names)
avro.schema.make_avsc_object({"type": "record", "name": "There", "fields": [
]}, names)
- works
The equivalent Java programs (using Avro-Java) do work:
import org.apache.avro.Schema.Parser;
Parser p = new Parser;
p.parse("""
""");
p.parse("""{"type": "record", "name": "There", "fields": [
]}""");
// works
import org.apache.avro.Schema.Parser;
Parser p = new Parser;
p.parse("""
""");
p.parse("""{"type": "record", "name": "There", "namespace": "com.wowie", "fields": [
]}""");
// works
import org.apache.avro.Schema.Parser;
Parser p = new Parser;
p.parse("""
""");
p.parse("""{"type": "record", "name": "There", "namespace": "com.wowie", "fields": [
]}""");
// works
import org.apache.avro.Schema.Parser;
Parser p = new Parser;
p.parse("""
""");
p.parse("""{"type": "record", "name": "There", "namespace": "com.wowie", "fields": [
]}""");
// works
import org.apache.avro.Schema.Parser;
Parser p = new Parser;
p.parse("""
""");
p.parse("""{"type": "record", "name": "There", "fields": [
]}""");
// works