[ 
https://issues.apache.org/jira/browse/AVRO-1872?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Chunfy.Tseng updated AVRO-1872:
-------------------------------
    Comment: was deleted

(was: "Protocol" file content is as follows:
{code}

{
    "protocol": "BigDataService",
    "namespace": "com.hbs.service",
    "types": [
        {
            "type": "record",
            "name": "Status",
            "namespace": "com.hbs.avro.dto",
            "fields": [
                {
                    "name": "code",
                    "type": "int"
                },
                {
                    "name": "error",
                    "type": [
                        "null",
                        "string"
                    ]
                }
            ]
        },
        {
            "type": "record",
            "name": "KVTS",
            "namespace": "com.hbs.avro.dto",
            "fields": [
                {
                    "name": "key",
                    "type": "string"
                },
                {
                    "name": "val",
                    "type": [
                        "null",
                        "string",
                        "bytes"
                    ]
                },
                {
                    "name": "ts",
                    "type": [
                        "null",
                        "string"
                    ]
                }
            ]
        },
        {
            "type": "record",
            "name": "ColumnFamily",
            "namespace": "com.hbs.avro.dto",
            "fields": [
                {
                    "name": "name",
                    "type": "string"
                },
                {
                    "name": "kvts",
                    "type": [
                        "null",
                        {
                            "type": "array",
                            "items": "KVTS"
                        }
                    ]
                }
            ]
        },
        {
            "type": "record",
            "name": "QueryORSaveArgs",
            "namespace": "com.hbs.avro.dto",
            "fields": [
                {
                    "name": "rowKey",
                    "type": "string"
                },
                {
                    "name": "families",
                    "type": {
                        "type": "array",
                        "items": "ColumnFamily"
                    }
                }
            ]
        },
        {
            "type": "record",
            "name": "QueryResponse",
            "namespace": "com.hbs.avro.dto",
            "fields": [
                {
                    "name": "table",
                    "type": "string"
                },
                {
                    "name": "nameSpace",
                    "type": [
                        "null",
                        "string"
                    ]
                },
                {
                    "name": "result",
                    "type": [
                        "null",
                        {
                            "type": "array",
                            "items": "QueryORSaveArgs"
                        }
                    ]
                },
                {
                    "name": "status",
                    "type": "Status"
                }
            ]
        },
        {
            "type": "enum",
            "name": "ByteArrayComparable",
            "namespace": "com.hbs.avro.dto",
            "doc": "the filter support comparator",
            "symbols": [
                "BinaryComparator",
                "BinaryPrefixComparator",
                "SubstringComparator",
                "RegexStringComparator"
            ]
        },
        {
            "type": "enum",
            "name": "CompareOp",
            "namespace": "com.hbs.avro.dto",
            "doc": "the comparator support more symbols",
            "symbols": [
                "LESS",
                "LESS_OR_EQUAL",
                "EQUAL",
                "NOT_EQUAL",
                "GREATER_OR_EQUAL",
                "GREATER"
            ]
        },
        {
            "type": "enum",
            "name": "Operator",
            "namespace": "com.hbs.avro.dto",
            "symbols": [
                "AND",
                "OR"
            ]
        },
        {
            "type": "record",
            "name": "RowKeyFilter",
            "namespace": "com.hbs.avro.dto",
            "fields": [
                {
                    "name": "byteArrayComparable",
                    "type": "ByteArrayComparable"
                },
                {
                    "name": "compareOp",
                    "type": "CompareOp"
                }
            ]
        },
        {
            "type": "record",
            "name": "RowKeyScanFilter",
            "namespace": "com.hbs.avro.dto",
            "fields": [
                {
                    "name": "startRow",
                    "type": "string"
                },
                {
                    "name": "stopRow",
                    "type": "string"
                }
            ]
        },
        {
            "type": "record",
            "name": "FirstKeyOnlyFilter",
            "namespace": "com.hbs.avro.dto",
            "fields": [
                {
                    "name": "firstKeyOnlyFilter",
                    "type": "boolean"
                }
            ]
        },
        {
            "type": "record",
            "name": "FamilyFilter",
            "namespace": "com.hbs.avro.dto",
            "fields": [
                {
                    "name": "byteArrayComparable",
                    "type": "ByteArrayComparable"
                },
                {
                    "name": "compareOp",
                    "type": "CompareOp"
                }
            ]
        },
        {
            "type": "record",
            "name": "ColumnRangeFilter",
            "namespace": "com.hbs.avro.dto",
            "fields": [
                {
                    "name": "minColumn",
                    "type": "string"
                },
                {
                    "name": "minColumnInclusive",
                    "type": "boolean"
                },
                {
                    "name": "maxColumn",
                    "type": "string"
                },
                {
                    "name": "maxColumnInclusive",
                    "type": "boolean"
                }
            ]
        },
        {
            "type": "record",
            "name": "QualifierFilter",
            "namespace": "com.hbs.avro.dto",
            "fields": [
                {
                    "name": "byteArrayComparable",
                    "type": "ByteArrayComparable"
                },
                {
                    "name": "compareOp",
                    "type": "CompareOp"
                }
            ]
        },
        {
            "type": "record",
            "name": "ColumnValueFilter",
            "namespace": "com.hbs.avro.dto",
            "fields": [
                {
                    "name": "byteArrayComparable",
                    "type": "ByteArrayComparable"
                },
                {
                    "name": "compareOp",
                    "type": "CompareOp"
                }
            ]
        },
        {
            "type": "record",
            "name": "PageFilter",
            "namespace": "com.hbs.avro.dto",
            "fields": [
                {
                    "name": "pageSize",
                    "type": "int"
                }
            ]
        },
        {
            "type": "record",
            "name": "FilterType",
            "namespace": "com.hbs.avro.dto",
            "fields": [
                {
                    "name": "operator",
                    "type": "Operator"
                },
                {
                    "name": "rowFilterType",
                    "type": [
                        "null",
                        "RowKeyFilter",
                        "RowKeyScanFilter",
                        "FirstKeyOnlyFilter"
                    ]
                },
                {
                    "name": "familyFilterType",
                    "type": [
                        "null",
                        "FamilyFilter"
                    ]
                },
                {
                    "name": "columnFilterType",
                    "type": [
                        "null",
                        "ColumnRangeFilter",
                        "QualifierFilter"
                    ]
                },
                {
                    "name": "columnValueFilterType",
                    "type": [
                        "null",
                        "ColumnValueFilter"
                    ]
                },
                {
                    "name": "pageFilterType",
                    "type": [
                        "null",
                        "PageFilter"
                    ]
                }
            ]
        }
    ],
    "messages": {
        "query": {
            "request": [
                {
                    "name": "table",
                    "type": "string"
                },
                {
                    "name": "nameSpace",
                    "type": [
                        "null",
                        "string"
                    ]
                },
                {
                    "name": "queryORSaveArgses",
                    "type": {
                        "type": "array",
                        "items": "com.hbs.avro.dto.QueryORSaveArgs"
                    }
                },
                {
                    "name": "filterType",
                    "type": [
                        "null",
                        "com.hbs.avro.dto.FilterType"
                    ]
                }
            ],
            "response": "com.hbs.avro.dto.QueryResponse"
        },
        "save": {
            "request": [
                {
                    "name": "table",
                    "type": "string"
                },
                {
                    "name": "nameSpace",
                    "type": [
                        "null",
                        "string"
                    ]
                },
                {
                    "name": "queryORSaveArgses",
                    "type": {
                        "type": "array",
                        "items": "com.hbs.avro.dto.QueryORSaveArgs"
                    }
                }
            ],
            "response": "com.hbs.avro.dto.Status"
        }
    }
}
{code})

> Using union in nodejs, when has several different names in the union's record 
> will report the Error at this time: ambiguous unwrapped the union, but the 
> same protocol in Java: no problem
> ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
>
>                 Key: AVRO-1872
>                 URL: https://issues.apache.org/jira/browse/AVRO-1872
>             Project: Avro
>          Issue Type: Bug
>          Components: java, javascript, js
>    Affects Versions: 1.8.1
>         Environment: node.js
>            Reporter: Chunfy.Tseng
>            Assignee: Matthieu Monsch
>
> protocol eg:
> {
>     "protocol": "Test",
>     "namespace": "test.avro",
>     "types": [
>         {
>             "type": "record",
>             "name": "AAA",
>             "fields": [
>                 {
>                     "name": "a",
>                     "type": "string"
>                 }
>             ]
>         },
>         {
>             "type": "record",
>             "name": "BBB",
>             "fields": [
>                 {
>                     "name": "b",
>                     "type": "string"
>                 },
>                 {
>                     "name": "a",
>                     "type": "AAA"
>                 }
>             ]
>         },
>         {
>             "type": "record",
>             "name": "CCC",
>             "fields": [
>                 {
>                     "name": "c",
>                     "type": "string"
>                 },
>                 {
>                     "name": "t",
>                     "type": "int"
>                 }
>             ]
>         },
>         {
>             "type": "record",
>             "name": "DDD",
>             "fields": [
>                 {
>                     "name": "temp",
>                     "type": "string"
>                 },
>                 {
>                     "name": "d",
>                     "type": [
>                         "null",
>                         "BBB",
>                         "CCC"
>                     ]
>                 }
>             ]
>         }
>     ],
>     "messages": {}
> }
> in java use cmd:java -jar  D:\workspace-mars2\Avro\lib\avro-tools-1.8.1.jar 
> compile protocol D:\new\Test.avpr D:\new    is ok.
> but in node.js code:
> var avro = require("D:\\Soft\\nodejs\\node_modules\\avsc");
> var protocol = avro.parse("./Test.avpr");
> Prompt error message as below:
> D:\Soft\nodejs\node_modules\avsc\lib\types.js:918
>         throw new Error(f('ambiguous unwrapped union: %j', this));
> Error: ambiguous unwrapped 
> union:["null",{"name":"test.avro.BBB","type":"record","fields":[{"name":"b","type":"string","order":"ascending","aliases":[]},{"name":"a","type":{"name":"test.avro.AAA","type":"record","fields":[{"name":"a","type":"string","order":"ascending","aliases":[]}],"aliases":[]},"order":"ascending","aliases":[]}],"aliases":[]},{"name":"test.avro.CCC","type":"record","fields":[{"name":"c","type":"string","order":"ascending","aliases":[]},{"name":"t","type":"int","order":"ascending","aliases":[]}],"aliases":[]}]
> it is bug?



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to