[ 
https://issues.apache.org/jira/browse/THRIFT-2381?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13914024#comment-13914024
 ] 

sherlockhua commented on THRIFT-2381:
-------------------------------------

Thank you for your reply, i found the golang code which generated by thrift 
from hbase/thrift2 have a binary type. just like follow:
const (
    STOP   = 0
    VOID   = 1
    BOOL   = 2
    BYTE   = 3
    I08    = 3
    DOUBLE = 4
    I16    = 6
    I32    = 8
    I64    = 10
    STRING = 11
    UTF7   = 11
    STRUCT = 12
    MAP    = 13
    SET    = 14
    LIST   = 15
    UTF8   = 16
    UTF16  = 17
    BINARY = 18
)

and the other language (like python), not have the binary type, like follow:
STOP   = 0 
  VOID   = 1 
  BOOL   = 2 
  BYTE   = 3 
  I08    = 3 
  DOUBLE = 4 
  I16    = 6 
  I32    = 8 
  I64    = 10
  STRING = 11
  UTF7   = 11
  STRUCT = 12
  MAP    = 13
  SET    = 14
  LIST   = 15
  UTF8   = 16
  UTF16  = 17

when i use the generate code, i call hbase interface, it's failed.the error 
message is follow:
 Required field 'table' was not present! Struct: get_args(table:null, get:null)

when i modify all the binary type to string type, like follow:
func (p *GetArgs) writeField1(oprot thrift.TProtocol) (err error) {
2016     if p.Table != nil {
2017         //if err := oprot.WriteFieldBegin("table", thrift.BINARY, 1); err 
!= nil {
2018         if err := oprot.WriteFieldBegin("table", thrift.STRING, 1); err != 
nil {                                                                           
            
2019             return fmt.Errorf("%T write field begin error 1:table: %s", p, 
err)
2020         }
2021         if err := oprot.WriteBinary(p.Table); err != nil {
2022             return fmt.Errorf("%T.table (1) field write error: %s", p)
2023         }
2024         if err := oprot.WriteFieldEnd(); err != nil {
2025             return fmt.Errorf("%T write field end error 1:table: %s", p, 
err)
2026         }
2027     }
2028     return err
2029 }

and it works, can you tell me why the code generated by golang have binary type 
but  it's does not  work,thank you very much




> code which generated by thrift2/hbase.thrift compile error
> ----------------------------------------------------------
>
>                 Key: THRIFT-2381
>                 URL: https://issues.apache.org/jira/browse/THRIFT-2381
>             Project: Thrift
>          Issue Type: Bug
>         Environment: hbase-0.94.3
> thrift-0.9.1
> go version go1.1.2 linux/amd64
> ubuntu 3.5.0-23-generic
>            Reporter: sherlockhua
>
> command:
> ./bin/thrift -gen go 
> ./hbase/hbase-thrift/src/main/resources/org/apache/hadoop/hbase/thrift2/hbase.thrift
> complile error:
> src/hbase/ttypes.go:1103: invalid map key type []byte
> src/hbase/ttypes.go:1267: invalid map key type []byte
> src/hbase/ttypes.go:1495: invalid map key type []byte
> src/hbase/ttypes.go:1616: invalid map key type []byte
> src/hbase/ttypes.go:1812: invalid map key type []byte
> src/hbase/ttypes.go:1947: invalid map key type []byte
> src/hbase/ttypes.go:2133: invalid map key type []byte
> src/hbase/ttypes.go:2237: invalid map key type []byte
> src/hbase/ttypes.go:2412: invalid map key type []byte
> src/hbase/ttypes.go:2697: invalid map key type []byte
> src/hbase/ttypes.go:2237: too many errors



--
This message was sent by Atlassian JIRA
(v6.1.5#6160)

Reply via email to