Hello Charles, > Here is my current working status. > 1. Complete the thrift_binary_in and thrift_binary_out functions, so > that users can express their thrift struct using json. These two > functions support both simple data struct and complex data structure > like struct and map. 2. added test cases and document to cover > thrift_binary_in and thrift_binary_out. 3. make the code compile-able > from 9.4 to 11.0.
I see multiple warnings during compilation with 11.0, e.g: ``` pg_thrift.c:1120:72: warning: implicit declaration of function ‘JsonbGetDatum’; did you mean ‘JsonbPGetDatum’? [-Wimplicit-function-declaration] pg_thrift.c:1206:13: warning: the address of ‘is_big_endian’ will always evaluate as ‘true’ [-Waddress] pg_thrift.c:1227:18: warning: implicit declaration of function ‘PG_GETARG_JSONB’; did you mean ‘PG_GETARG_JSONB_P’? [-Wimplicit-function-declaration] pg_thrift.c:1227:18: warning: initialization of ‘Jsonb *’ {aka ‘struct <anonymous> *’} from ‘int’ makes pointer from integer without a cast [-Wint-conversion] ``` Also tests (make clean && make && make install && make installcheck) don't pass. > One question though, for custom types, it seems rich operations are > also very important besides storing and expressing using thrift type. > What are the most important operators should I support? Any > suggestions? Here is the updated repo > https://github.com/charles-cui/pg_thrift I believe get field / set field are most common ones. Naturally there are also enumerations, projections, you name it. You can check out list of operation supported by JSONB (or a list of operations on dict's in Python) to get a full picture. -- Best regards, Aleksander Alekseev